Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> sistemi >> Windows 7 >> .

Posso avere un file batch in esecuzione che continua in un altro ma lo stesso punto di prima di spostare Windows 7?

Non è possibile riprendere direttamente l'esecuzione di un file batch da dove si è interrotto in Windows 7 (o in qualsiasi altra versione di Windows) dopo un riavvio o arresto del sistema. I file batch sono intrinsecamente apolidi; Non salvano il loro stato interno tra le corse.

Tuttavia, è possibile ottenere un effetto simile utilizzando le tecniche per gestire lo stato di elaborazione del file * esternamente * al file batch. Ecco alcuni approcci:

1. Utilizzando un file temporaneo per tracciare i progressi:

Questo metodo prevede la creazione di un file temporaneo che memorizza l'ultimo elemento e il numero di riga elaborato. Il file batch legge questo file all'inizio per determinare dove riprendere.

batch `` `

@echo off

Imposta "tempfile =progress.tmp"

Imposta "InputFile =your_input_file.txt"

::Controlla se esiste il file di progresso. In caso contrario, inizia dall'inizio.

Se esiste "%tempfile%" (

SET /P "LastProcessedLine =" <"%Tempfile%"

Echo riprendendo dalla linea:%ultimo processo %

) altro (

Imposta "LastProcessedLine =0"

eco a partire dall'inizio

)

::elabora il file, a partire dall'ultima linea elaborata.

per /f "skip =%lastprocessedline%delims =" %% a in (%inputfile%) do (

linea di elaborazione eco:%% a

::La tua logica di elaborazione qui ...

::Aggiorna il file di avanzamento con il numero di riga corrente.

echo %% a> "%tempfile%"

)

Del "%tempfile%"

Echo finito!

`` `

2. Utilizzo di un database (più complesso ma robusto):

Per scenari più complessi o set di dati di grandi dimensioni, un piccolo database (come SQLite) sarebbe più adatto. Il file batch aggiornerebbe il database con le informazioni di avanzamento. Questo offre una migliore resilienza e monitoraggio. Questo approccio richiede l'installazione di SQLite e l'utilizzo dei suoi strumenti di riga di comando all'interno dello script batch.

3. Modifica del file di input:

Questo è meno elegante ma può funzionare per casi semplici. È possibile modificare il file di input stesso per contrassegnare le righe elaborate (ad esempio, aggiungere un marcatore all'inizio di ogni riga). Lo script quindi salta le linee con il marcatore. Questo è meno robusto perché altera direttamente il file di input.

Considerazioni importanti:

* Gestione degli errori: Aggiungi la gestione degli errori ai file batch (ad esempio, `se errorlo 1 ...`). Se l'elaborazione non riesce, il file di avanzamento potrebbe essere incoerente.

* Atomicità: Se stai scrivendo ai file, considera potenziali problemi con scritture parziali a causa di interruzioni. Utilizzare le tecniche per garantire l'integrità dei dati.

* Blocco file: Se più istanze del file batch potrebbero essere eseguite contemporaneamente, implementare il blocco dei file per prevenire le condizioni di gara.

Ricorda di sostituire `" your_input_file.txt "` con il nome effettivo del tuo file di input. L'esempio fornito mostra la linea di elaborazione per riga, ma è possibile adattarlo per elaborare altre strutture di dati. Scegli il metodo che si adatta meglio alle tue esigenze e complessità. L'approccio temporaneo è il più semplice per i casi semplici. Per qualcosa di più coinvolto, un database è una soluzione molto più robusta.

 

sistemi © www.354353.com