Einige Fallstricke, auf die Sie achten sollten:
Wenn Sie doppelklicken, wird die Batchdatei %0von 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, %0wird auf alles verwiesen, was Sie eingegeben haben . Wenn Sie eingeben test.batEnter, enthält die Ausgabe von %0keine Anführungszeichen, da Sie keine Anführungszeichen eingegeben haben:
c:\>test.bat
test.bat
Wenn Sie eingeben testEnter, hat die Ausgabe von %0auch keine Erweiterung, da Sie keine Erweiterung eingegeben haben:
c:\>test
test
Gleiches gilt für tEsTEnter:
c:\>tEsT
tEsT
Wenn Sie eingeben "test"Enter, enthält die Ausgabe von %0Anfü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 %0kö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 %~0einfach die Ausgabe von %0 Minus-Anführungszeichen (falls vorhanden) ist.
echo %~dp0nicht in der Befehlszeile, sondern nur in einer Batchdatei. Duh!