KnowHow: Batching

Batch bearbeitet das Batchverzeichnis

Normalerweise zieht man sich dabei, pardon der Batchdatei, den Boden unter den Bytes weg ! Hat nämlich diese Batchdatei ihren Stammplatz in dem Verzeichnis, in dem alle Batchdateien stehen und dieses Verzeichnis muß vorübergehend gelöscht werden, so kann das DOS die entsprechende Batchdatei nicht mehr wiederfinden und bricht etwa mit folgender Meldung ab:

 Diskette mit Stapeldatei einlegen !
 Wenn bereit eine beliebige Taste drücken.

Da aber die Batchdatei sich selbst ausradiert hat, kann man soviele Tasten drücken wie man will. Denn das DOS wird diese Batchdatei nicht mehr finden ! Einzig der Abbruch mit <STG>+<C> hilft kurzfristig aus dieser Misere herauszukommen. Die restlichen geplanten Befehle müssen dann von Hand eingegeben werden, damit man die Ordnung wiederherstellen kann.

Ich habe dieses schon mehrmals erlebt und eine Lösung geschaffen, die die Batchdatei aus dem kritischen Verzeichnis verlagert:

@echo off
if %1.==. goto err
copy c:\batch\%1.bat c:\>nul
c:\%1 %2 %3 %4 %5 %6 %7 %8 %9
:err
echo Aufruf mit:
echo BATCH Batchdatei Parameter

Möchte ich also das Verzeichnis BATCH mit meiner Batchdatei „DEFRAG.BAT“ defragmentieren, so starte ich diesen Vorgang mit:

 BATCH DEFRAG \BATCH

Die Routine „BATCH.BAT“ kopiert daraufhin „DEFRAG.BAT“ in das Hauptverzeichnis von C: und startet anschließend „DEFRAG.BAT“ vom Hauptverzeichnis von C:. Zwar erfolgt dieser Start nur mit maximal acht Parametern, aber das dürfte in den meisten Fällen auch genügen.
Nachdem die eigentliche Defragmentierung abgeschlossen wurde, müsst Ihr die „DEFRAG.BAT“ eigenhändig aus dem Hauptverzeichnis von C: entfernen, weil „DEFRAG.BAT“ nicht rekursiv programmiert wurde !

Lars Aschenbach