Batch Konsole schließt sich am Ende nicht selbst.

Hi.
Ich habe folgende Batch Datei erstellt. Seht sie euch einfach erstmal an. (Wichtig ist alles ab dem Kommentar am Ende)
-----------------------------------------------------------------
del *.exe

set QTDIR=C:\Qt\4.1.1
set PATH=C:\Qt\4.1.1\bin
set PATH=%PATH%;C:\MinGW\bin
set PATH=%PATH%;%SystemRoot%\System32
set QMAKESPEC=win32-g++

if not "%1"=="compile_debug" goto END
cd %QTDIR%
echo This will configure and compile qt in debug.
echo The release libraries will not be recompiled.
pause
configure -plugin-sql-sqlite -plugin-sql-odbc -qt-libpng -qt-libjpeg
cd %QTDIR%\src
mingw32-make debug
:END

cd "%userprofile%/eigene dateien/qt"
qmake test.pro

::Am Ende wird in die Datei tmp.bat geschrieben, dass sie sich selbst löschen soll
echo ping localhost -n 6 > tmp.bat
echo del makefile.release >> tmp.bat
echo del makefile >> tmp.bat
echo del makefile.debug >> tmp.bat
echo rmdir debug >> tmp.bat
echo cd release >> tmp.bat
echo del test.o >> tmp.bat
echo move test.exe ../test.exe >> tmp.bat
echo cd ../ >> tmp.bat
echo rmdir release >> tmp.bat
echo del %%0 >> tmp.bat
start tmp.bat

make
------------------------------------------------------------------

Der Code funktioniert soweit auch einwandfrei, aber leider schließt sich das zweite Konsolenfenster (also das Konsolenfenster der tmp.bat) nicht, nachdem sie sich selbst löscht. Sie ist dann zwar weg aber das Konsolenfenster bleibt offen und das nervt. Weiß jemand wie ich es schaffe, das Konsolenfenster zu schließen?
Freue mich auf eure Hilfe ^^
 
koennte es sein dass das nicht funktioniert weil die .bat ja zudem zeitpunkt bereits geloescht wurde und der befehl daher nicht mehr gelesen werden kann? hab nichts mit batch am hut und daher nur ne vermutung ;)
 
achduje, wie lang ist das her :) *schwelg

du kannst eine zweite Datei namens doit.bat anlegen; in diese Datei
schreibst du

# tmp.bat aufrufen als "instanz"
call tmp.bat
# dadda
exit

Der Aufruf der tmp.bat erfolgt also von der doit.bat mittels einem Befehl der (glaube ich) in DOS 4.01 erstmalig eingeführt wurde -> CALL

nun passiert folgendes:

call tmp.bat ruft tmp.bat als child Prozess auf und geht auf Wartestellung (ungefähr so wie ein TSR-Programm)

Sobald die tmp.bat erledigt ist - das inkludiert die "Selbstzerstörung" springt DOS (oder was da unter XP läuft) zurück zur doit.bat und führt die nächste Zeile nach dem Call aus.

hope it helps.

P.S. - Batchfiles sind geil und DOS ist immer noch der schnellste Weg, einen Ordner unter XP mit allen Unterordnern zu löschen :D
 
Naja, das schließt zwar das Fenster der tmp.bat ABER die doit.bat bleibt dann erhalten. Die will ich am Ende auch gelöscht haben.
Eigentlich schließt sich die Konsole ja, wenn die Datei abgearbeitet ist. Aber das passiert hier irgentwie nicht. Nur wenn ich den Befehl "exit" verwende, schließt sich das Fenster automatisch, aber dann klappt die Selbstzerstörung nicht mehr.
 
ahjo, dann mach dir ne PIF (Verknüpfung mit DOSenfile) für die doit.bat und stell das dort ein :) -> rechte Maustaste / Propertiers - dann solltest du aber wirklich Ruhe haben. Ich gehe einmal davon aus, das generell das Problem nicht besteht, es also nicht an einer "defekten" Windows-Installation liegt.
 
Zurück
Oben