416 Stimmen

Was bedeutet %~d0 in einer Windows-Batch-Datei?

Ich betrachte eine Batch-Datei, in der die folgenden Variablen definiert sind:

set _SCRIPT_DRIVE=%~d0
set _SCRIPT_PATH=%~p0
  • Was tun %~d0 o %~p0 tatsächlich bedeuten?
  • Gibt es eine Reihe von bekannten Werten für Dinge wie das aktuelle Verzeichnis, das Laufwerk oder die Parameter eines Skripts?
  • Gibt es andere ähnliche Abkürzungen, die ich verwenden könnte?

9voto

Pacerier Punkte 80774

Es gibt einige Probleme, auf die Sie achten sollten:

Wenn Sie Doppelklicken Sie auf die Batch-Datei %0 wird von Anführungszeichen umgeben sein. Wenn Sie diese Datei zum Beispiel als c:\test.bat :

@echo %0
@pause

Ein Doppelklick darauf öffnet eine neue Eingabeaufforderung mit Ausgabe:

"C:\test.bat"

Wenn Sie jedoch zunächst eine Eingabeaufforderung öffnen und das Programm direkt von dieser Eingabeaufforderung aus aufrufen, %0 bezieht sich auf das, was Sie getippt . Wenn Sie eingeben test.batEnter die Ausgabe von %0 enthält keine Anführungszeichen, weil Sie keine Anführungszeichen eingegeben haben:

c:\>test.bat
test.bat

Wenn Sie eingeben testEnter die Ausgabe von %0 wird auch keine Erweiterung haben, weil Sie keine Erweiterung eingegeben haben:

c:\>test
test

Dasselbe gilt für tEsTEnter :

c:\>tEsT
tEsT

Wenn Sie eingeben "test"Enter die Ausgabe von %0 enthält Anführungszeichen (da Sie sie eingegeben haben), aber keine Erweiterung:

c:\>"test"
"test"

Schließlich, wenn Sie eingeben "C:\test.bat" wäre die Ausgabe genau so, als ob Sie darauf doppelt geklickt hätten:

c:\>"C:\test.bat"
"C:\test.bat"

Beachten Sie, dass dies nicht alle möglichen Werte sind %0 sein kann, weil Sie das Skript von anderen Ordnern aus aufrufen können:

c:\some_folder>/../teST.bAt
/../teST.bAt

Alle oben angeführten Beispiele betreffen auch %~0 weil die Ausgabe von %~0 ist einfach die Ausgabe von %0 abzüglich der Kostenvoranschläge (falls vorhanden).

7voto

Armin Ronacher Punkte 31082

%~d0 gibt Ihnen den Laufwerksbuchstaben des Arguments 0 (den Skriptnamen), %~p0 den Weg.

3voto

djangofan Punkte 26852

Dieser Code erklärt die Verwendung des Zeichens ~tilde, das mich am meisten verwirrt hat. Nachdem ich das verstanden hatte, war es viel einfacher, die Dinge zu verstehen:

@ECHO off
SET "PATH=%~dp0;%PATH%"
ECHO %PATH%
ECHO.
CALL :testargs "these are days" "when the brave endure"
GOTO :pauseit
:testargs
SET ARGS=%~1;%~2;%1;%2
ECHO %ARGS%
ECHO.
exit /B 0
:pauseit
pause

0voto

zask Punkte 191

Es zeigt den aktuellen Speicherort der Datei oder des Verzeichnisses an, in dem Sie sich gerade befinden. Wenn sich Ihre Batch-Datei beispielsweise im Desktop-Verzeichnis befindet, würde "%~dp0" das Desktop-Verzeichnis anzeigen. Wenn Sie das aktuelle Verzeichnis mit dem aktuellen Dateinamen anzeigen möchten, können Sie "%~dp0%~n0%~x0" eingeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X