Meine Datensicherung besteht aus zwei Batchdateien, z.B. Home1.bat und Home2.bat.
Home2.bat wird ganz normal von Home1.bat mit dem Dateinamen aufgerufen, also z.B. Home2.bat
Aus dieser zweiten Batch heraus werden einige temporäre Textdateien (z.B. Temp1.txt usw.) erstellt.
Der Inhalt dieser Textdateien wird von einigen Programmen noch bearbeitet,
die auch aus der Home2.bat heraus aufgerufen werden.
Das Endergebnis dieser Textbearbeitung sind zwei Batch-Dateien (z.B. temp10.bat),
die auch aus der Home2.bat heraus mit dem Befehl:
call c:\temp\temp10.bat aufgerufen werden.
Ist fast die komplette Batch Home2.bat durchlaufen, dann will ich die temporären Dateien mit dem Befehl
del c:\temp\temp*.*
löschen, erhalte aber die Fehlermeldung:
"Stapelverarbeitungsdatei fehlt".
Es werden weder die Dateien Temp*.txt noch die Dateien Temp*.bat gelöscht.
Die Batch Home2.bat bricht ab, ohne daß die restlichen Befehle abgearbeitet werden.
Will ich weitere Eingaben auf Promtebene durchführen, dann hängt sich der Rechner so auf, daß ich ihn neu starten muß.
Wenn ich aber aus Home2.bat noch einmal eine Batch (ohne Call) aufrufe, in der der obige Löschbefehl steht,
dann funktioniert es.
Nun meine Vermutung:
Ist es vielleicht so, daß wenn Dateien durch eine Batch aufgerufen werden noch temporär im Hintergrund geöffnet bleiben,
und deshalb nicht gelöscht werden können? Und diese Dateien erst wirklich geschlossen werden, wenn die Ursprungsbatch
durch die sie aufgerufen werden geschlossen wird?
Kann mir jemand erklären ob ich mit meiner Vermutung richtig oder falsch liege?
Gruß Frank
Kann mir jemand das Unerklärliche erklären?
-
- DOS-Übermensch
- Beiträge: 1035
- Registriert: Mi 31. Jan 2007, 19:04
- Wohnort: Halle
- Kontaktdaten:
Kontrollier bitte nochmal, ob du nicht irgendwo die gerade laufende Batch Datei loeschst.
Mit den Aufrufen geht es so, dass der Aufruf einer anderen bat die aktuelle beendet.
Bei Call wird die Rueckkehr auf den Stack gelegt. Die aufrufende Batch Datei bleibt geoeffnet und bei Rueckkehr liest er an der alten Position weiter, das heisst die naechste Zeile.
Ob bei einem normalen Aufruf (ohne Stack) die vorherige geschlossen wird, kannst du mit einem ganz einfachen Konstrukt testen:
Datei 1.bat:
2.bat
Datei 2.bat:
del 1.bat
Wenn als Fehlermeldung kommt 'Kann Datei nicht loeschen' dann ist 1.bat noch geoeffnet. Eigentlich ist es jedoch so, dass 1.bat geschlossen ist. Das heisst es funktioniert problemlos.
Meine Vermutung ist, dass dein Problem vor dem del Befehl ist und die eine Batch Datei loeschst, die entweder gerade ausgefuehrt wird oder auf dem Ruecksprungstapel liegt.
Wenn die Datei nicht mehr existent ist, dann kommt genau deine beschriebene Fehlermeldung.
Mit den Aufrufen geht es so, dass der Aufruf einer anderen bat die aktuelle beendet.
Bei Call wird die Rueckkehr auf den Stack gelegt. Die aufrufende Batch Datei bleibt geoeffnet und bei Rueckkehr liest er an der alten Position weiter, das heisst die naechste Zeile.
Ob bei einem normalen Aufruf (ohne Stack) die vorherige geschlossen wird, kannst du mit einem ganz einfachen Konstrukt testen:
Datei 1.bat:
2.bat
Datei 2.bat:
del 1.bat
Wenn als Fehlermeldung kommt 'Kann Datei nicht loeschen' dann ist 1.bat noch geoeffnet. Eigentlich ist es jedoch so, dass 1.bat geschlossen ist. Das heisst es funktioniert problemlos.
Meine Vermutung ist, dass dein Problem vor dem del Befehl ist und die eine Batch Datei loeschst, die entweder gerade ausgefuehrt wird oder auf dem Ruecksprungstapel liegt.
Wenn die Datei nicht mehr existent ist, dann kommt genau deine beschriebene Fehlermeldung.
Diverse Retro-Computer vorhanden.