Du kan inte direkt återuppta en batchfils körning från exakt där den slutade i Windows 7 (eller någon annan Windows -version) efter en systemstart eller avstängning. Batchfiler är i sig statslösa; De sparar inte sitt interna tillstånd mellan körningar.
Du kan dock uppnå en liknande effekt genom att använda tekniker för att hantera filbehandlingstillståndet * externt * till batchfilen. Här är några tillvägagångssätt:
1. Använda en tillfällig fil för att spåra framsteg:
Den här metoden innebär att skapa en tillfällig fil som lagrar det sista bearbetade objektet eller radnumret. Batchfilen läser den här filen i början för att avgöra var den ska återupptas.
`` `Batch
@Cho Off
Ställ in "TempFile =Progress.tmp"
Ställ in "InputFile =Your_Input_File.txt"
::Kontrollera om framstegsfilen finns. Om inte, börja från början.
om det finns "%tempfile%" (
set /p "lastprocedline =" <"%tempfile%"
Echo återupptas från raden:%Lastprocedline %
) annars (
Ställ in "Lastprocedline =0"
Echo från början
)
::bearbeta filen, från den senaste bearbetade raden.
för /f "Skip =%LastprocedLine%delims =" %% A i (%inputFile%) do (
Echo Processing Line:%% a
::Din bearbetningslogik här ...
::Uppdatera framstegsfilen med det aktuella radnumret.
echo %% a> "%tempfile%"
)
del "%tempfile%"
Echo slutade!
`` `
2. Använda en databas (mer komplex men robust):
För mer komplexa scenarier eller stora datasätt skulle en liten databas (som SQLite) vara mer lämplig. Batchfilen skulle uppdatera databasen med framstegsinformationen. Detta erbjuder bättre motståndskraft och spårning. Detta tillvägagångssätt kräver installation av SQLite och använder sina kommandoradsverktyg i ditt batchskript.
3. Ändra inmatningsfilen:
Detta är mindre elegant men kan fungera för enkla fall. Du kan ändra själva inmatningsfilen för att markera bearbetade rader (t.ex. lägga till en markör i början av varje rad). Skriptet hoppar sedan över linjerna med markören. Detta är mindre robust eftersom det direkt förändrar inmatningsfilen.
Viktiga överväganden:
* Felhantering: Lägg till felhantering till dina batchfiler (t.ex. `om felnivå 1 ...`). Om behandlingen misslyckas kan din framstegsfil vara inkonsekvent.
* atomicitet: Om du skriver till filer kan du överväga potentiella problem med delvis skrivningar på grund av avbrott. Använd tekniker för att säkerställa dataintegritet.
* fillåsning: Om flera instanser av batchfilen kan köras samtidigt, implementera fillåsning för att förhindra rasförhållanden.
Kom ihåg att ersätta `" your_input_file.txt "` med det faktiska namnet på din inmatningsfil. Det medföljande exemplet visar bearbetningslinje för rad, men du kan anpassa den för att bearbeta andra datastrukturer. Välj den metod som bäst passar dina behov och komplexitet. Den tillfälliga filmetoden är det enklaste för enkla fall. För allt mer involverat är en databas en mycket mer robust lösning.