Sie können die Ausführung einer Stapeldatei nicht direkt von genau dort fortsetzen, wo sie in Windows 7 (oder einer anderen Windows -Version) nach einem Neustart oder Herunterfahren eines Systems aufgehört hat. Stapeldateien sind von Natur aus staatenlos; Sie retten ihren internen Zustand nicht zwischen Läufen.
Sie können jedoch einen ähnlichen Effekt erzielen, indem Sie Techniken verwenden, um den Dateiverarbeitungsstatus * extern * mit der Stapeldatei zu verwalten. Hier sind einige Ansätze:
1. Verwenden einer temporären Datei, um den Fortschritt zu verfolgen:
Diese Methode beinhaltet das Erstellen einer temporären Datei, in der die zuletzt verarbeitete Element- oder Zeilennummer gespeichert ist. Die Batch -Datei liest diese Datei am Start, um zu bestimmen, wo sie wieder aufgenommen werden sollen.
`` `Batch
@echo aus
Setzen Sie "tempFile =progresor.tmp"
Setzen Sie "inputFile =your_input_file.txt"
::Überprüfen Sie, ob die Fortschrittsdatei vorhanden ist. Wenn nicht, beginnen Sie von Anfang an.
Wenn "%tempfile%" existiert (
set /p "Last Processedline =" <"%tempfile%"
Echo wieder von Linie wieder aufgenommen:%Last Processed Line %
) anders (
Setzen Sie "Last Processedline =0"
Echo von Anfang an echo
)
::Verarbeiten Sie die Datei ab der letzten verarbeiteten Zeile.
für /f "übersprungen =%Last Processedline%delims =" %% a in (%InputFile%) tun (
Echo -Verarbeitungslinie:%% a
::Ihre Verarbeitungslogik hier ...
::Aktualisieren Sie die Fortschrittsdatei mit der aktuellen Zeilennummer.
Echo %% a> "%tempfile%"
)
Del "%tempfile%"
Echo fertig!
`` `
2. Verwenden einer Datenbank (komplexer, aber robuster):
Für komplexere Szenarien oder große Datensätze wäre eine kleine Datenbank (wie SQLite) besser geeignet. Die Stapeldatei würde die Datenbank mit den Fortschrittsinformationen aktualisieren. Dies bietet eine bessere Belastbarkeit und Verfolgung. Dieser Ansatz erfordert die Installation von SQLite und die Verwendung seiner Befehlszeilen-Tools in Ihrem Batch-Skript.
3. Ändern der Eingabedatei:
Dies ist weniger elegant, kann aber für einfache Fälle funktionieren. Sie können die Eingabedatei selbst so ändern, dass sie verarbeitete Zeilen markieren (z. B. einen Marker zum Beginn jeder Zeile hinzufügen). Das Skript überspringt dann Zeilen mit dem Marker. Dies ist weniger robust, da es die Eingabedatei direkt verändert.
Wichtige Überlegungen:
* Fehlerbehandlung: Fügen Sie Ihren Batch -Dateien Fehlerbehandlungen hinzu (z. B. `if Fehlerlevel 1 ...`). Wenn die Verarbeitung fehlschlägt, ist Ihre Fortschrittsdatei möglicherweise inkonsistent.
* Atomizität: Wenn Sie in Dateien schreiben, berücksichtigen Sie potenzielle Probleme mit Teilschreibungen aufgrund von Unterbrechungen. Verwenden Sie Techniken, um die Datenintegrität zu gewährleisten.
* Dateisperrung: Wenn mehrere Instanzen der Stapeldatei gleichzeitig ausgeführt werden, implementieren Sie die Dateisperrung, um die Rennbedingungen zu verhindern.
Denken Sie daran, `" your_input_file.txt "` durch den tatsächlichen Namen Ihrer Eingabedatei zu ersetzen. Das angegebene Beispiel zeigt die Verarbeitungslinie für Zeile an, Sie können es jedoch an die Verarbeitung anderer Datenstrukturen anpassen. Wählen Sie die Methode, die Ihren Bedürfnissen und Komplexität am besten entspricht. Der temporäre Dateiansatz ist für einfache Fälle am einfachsten. Für alles, was in Beteiligung beteiligt ist, ist eine Datenbank eine viel robustere Lösung.