| U kunt de uitvoering van een batchbestand niet direct hervatten vanaf het exacte punt waar het was gebleven in Windows 7 (of een andere Windows-versie) nadat het systeem opnieuw is opgestart of afgesloten. Batchbestanden zijn inherent staatloos; ze slaan hun interne status niet op tussen runs.
U kunt echter een soortgelijk effect bereiken door technieken te gebruiken om de bestandsverwerkingsstatus *extern* ten opzichte van het batchbestand te beheren. Hier zijn een paar benaderingen:
1. Een tijdelijk bestand gebruiken om de voortgang bij te houden:
Bij deze methode wordt een tijdelijk bestand gemaakt waarin het laatst verwerkte item of regelnummer wordt opgeslagen. Het batchbestand leest dit bestand aan het begin om te bepalen waar het moet worden hervat.
```partij
@echo uit
stel "tempfile=progress.tmp" in
stel "inputFile=uw_input_bestand.txt" in
::Controleer of er een voortgangsbestand bestaat. Zo niet, begin dan vanaf het begin.
indien aanwezig "%tempfile%" (
set /p "lastProcessedLine=" <"%tempfile%"
echo Hervat vanaf regel:%lastProcessedLine%
) anders (
stel "lastProcessedLine=0" in
echo Vanaf het begin
)
::Verwerk het bestand, beginnend bij de laatst verwerkte regel.
for /f "skip=%lastProcessedLine% delims=" %%a in (%inputFile%) do (
echo Verwerkingsregel:%%a
::Uw verwerkingslogica hier...
::Werk het voortgangsbestand bij met het huidige regelnummer.
echo %%a> "%tempfile%"
)
del "%tempbestand%"
echo Klaar!
```
2. Met behulp van een database (complexer maar robuuster):
Voor complexere scenario's of grote datasets zou een kleine database (zoals SQLite) geschikter zijn. Het batchbestand zou de database bijwerken met de voortgangsinformatie. Dit biedt een betere veerkracht en tracking. Deze aanpak vereist het installeren van SQLite en het gebruik van de opdrachtregelprogramma's binnen uw batchscript.
3. Het invoerbestand wijzigen:
Dit is minder elegant, maar kan voor eenvoudige gevallen werken. U kunt het invoerbestand zelf aanpassen om verwerkte regels te markeren (bijvoorbeeld door een markering toe te voegen aan het begin van elke regel). Het script slaat dan regels met de markering over. Dit is minder robuust omdat het het invoerbestand direct verandert.
Belangrijke overwegingen:
* Foutafhandeling: Voeg foutafhandeling toe aan uw batchbestanden (bijvoorbeeld `if errorlevel 1 ...`). Als de verwerking mislukt, is uw voortgangsbestand mogelijk inconsistent.
* Atomiciteit: Als u naar bestanden schrijft, houd dan rekening met mogelijke problemen met gedeeltelijke schrijfbewerkingen als gevolg van onderbrekingen. Gebruik technieken om de gegevensintegriteit te garanderen.
* Bestandsvergrendeling: Als meerdere exemplaren van het batchbestand gelijktijdig kunnen worden uitgevoerd, implementeert u bestandsvergrendeling om race-omstandigheden te voorkomen.
Vergeet niet om `"uw_invoer_bestand.txt"` te vervangen door de werkelijke naam van uw invoerbestand. Het gegeven voorbeeld toont de verwerking regel voor regel, maar u kunt het aanpassen om andere datastructuren te verwerken. Kies de methode die het beste bij uw behoeften en complexiteit past. Voor eenvoudige gevallen is de tijdelijke dossieraanpak het gemakkelijkst. Voor alles wat meer betrokken is, is een database een veel robuustere oplossing. |