Kann mir jemand das Unerklärliche erklären?

Du hast eine Frage aber bist neu im Thema?
Antworten
frank9652
Norton Commander
Beiträge: 142
Registriert: Di 27. Mär 2007, 13:03
Wohnort: Göppingen

Kann mir jemand das Unerklärliche erklären?

Beitrag von frank9652 »

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
elianda
DOS-Übermensch
Beiträge: 1150
Registriert: Mi 31. Jan 2007, 19:04
Wohnort: Halle
Kontaktdaten:

Beitrag von elianda »

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.
Diverse Retro-Computer vorhanden.
Antworten