Einige Fallstricke, auf die Sie achten sollten:
Wenn Sie doppelklicken, wird die Batchdatei %0
von Anführungszeichen umgeben. Wenn Sie diese Datei beispielsweise speichern als c:\test.bat
:
@echo %0
@pause
Durch Doppelklicken wird eine neue Eingabeaufforderung mit Ausgabe geöffnet:
"C:\test.bat"
Wenn Sie jedoch zuerst eine Eingabeaufforderung öffnen und direkt von dieser Eingabeaufforderung aus aufrufen, %0
wird auf alles verwiesen, was Sie eingegeben haben . Wenn Sie eingeben test.bat
Enter, enthält die Ausgabe von %0
keine Anführungszeichen, da Sie keine Anführungszeichen eingegeben haben:
c:\>test.bat
test.bat
Wenn Sie eingeben test
Enter, hat die Ausgabe von %0
auch keine Erweiterung, da Sie keine Erweiterung eingegeben haben:
c:\>test
test
Gleiches gilt für tEsT
Enter:
c:\>tEsT
tEsT
Wenn Sie eingeben "test"
Enter, enthält die Ausgabe von %0
Anführungszeichen (da Sie sie eingegeben haben), jedoch keine Erweiterung:
c:\>"test"
"test"
Wenn Sie schließlich eingeben "C:\test.bat"
, ist die Ausgabe genau so, als hätten Sie darauf doppelklicken:
c:\>"C:\test.bat"
"C:\test.bat"
Beachten Sie, dass dies nicht alle möglichen Werte sein %0
können, da Sie das Skript aus anderen Ordnern aufrufen können:
c:\some_folder>/../teST.bAt
/../teST.bAt
Alle oben gezeigten Beispiele wirken sich auch aus %~0
, da die Ausgabe von %~0
einfach die Ausgabe von %0
Minus-Anführungszeichen (falls vorhanden) ist.
echo %~dp0
nicht in der Befehlszeile, sondern nur in einer Batchdatei. Duh!