Die magischen Variablen %
n enthalten die Argumente, die zum Aufrufen der Datei verwendet werden: Ist der %0
Pfad zur Bat-Datei selbst, %1
ist das erste Argument danach, %2
ist das zweite und so weiter.
Da es sich bei den Argumenten häufig um Dateipfade handelt, gibt es eine zusätzliche Syntax zum Extrahieren von Teilen des Pfads. ~d
ist Laufwerk, ~p
ist der Pfad (ohne Laufwerk), ~n
ist der Dateiname. Sie können kombiniert werden, ebenso ~dp
wie Laufwerk + Pfad.
%~dp0
ist daher in einer Fledermaus ziemlich nützlich: Es ist der Ordner, in dem sich die ausführende Fledermausdatei befindet.
Sie können auch andere Arten von Metainformationen über die Datei ~t
abrufen : Ist der Zeitstempel, ~z
ist die Größe.
Schauen Sie hier für eine Referenz für alle Kommandozeilenbefehle. Die Tilde-Magic-Codes sind unter für beschrieben .
echo %~dp0
nicht in der Befehlszeile, sondern nur in einer Batchdatei. Duh!%~d0
und%~d0%
?echo %~pd0
Gibt die gleiche Ausgabe wie Echo%~dp0
(statt wie erwartet invers). Der Wert von%0
ist unterschiedlich, je nachdem, ob Sie auf die Batchdatei doppelklicken oder sie über cmd ausführen.Sie sind erweiterte Variablensubstitutionen. Sie ändern die in Batch-Dateien verwendeten% N-Variablen. Sehr nützlich, wenn Sie sich mit Batch-Programmierung in Windows beschäftigen.
Sie können die oben genannten finden, indem Sie ausführen
FOR /?
.quelle
Ja, es gibt andere Verknüpfungen, die Sie verwenden können. In Ihrem Befehl würde ~ d0 den Laufwerksbuchstaben des 0. Arguments bedeuten.
Da das 0. Argument der Skriptpfad ist, erhält es den Laufwerksbuchstaben des Pfads für Sie. Sie können auch die folgenden Verknüpfungen verwenden.
Dies finden Sie auch direkt in der Eingabeaufforderung, wenn Sie CALL /? oder für /?
quelle
Vom Parsen von Dateinamen in Batch-Dateien und weiteren Redewendungen - Real's How-to :
Der Pfad (ohne Laufwerk), in dem sich das Skript befindet: ~ p0
Das Laufwerk, auf dem sich das Skript befindet: ~ d0
quelle
%~s0
auch den vollständigen Skriptnamen.Ein weiterer Tipp, der sehr hilfreich wäre, ist, dass man dann zuerst das aktuelle Verzeichnis auf ein anderes Laufwerk setzen
%~d0
musscd %~dp0
. Dadurch wird das Verzeichnis in das Laufwerk der Batchdatei und anschließend in den Ordner geändert.Ändert für #oneLinerLovers
cd /d %~dp0
sowohl das Laufwerk als auch das Verzeichnis :)Hoffe das hilft jemandem.
quelle
pushd %~dp0
, dass das aktuelle Laufwerk problemlos geändert werden kann und Sie den zusätzlichen Vorteil haben, dass Siepopd
später zum ursprünglichen Laufwerk / Pfad zurückkehren können.%~d0
gibt Ihnen den Laufwerksbuchstaben des Arguments 0 (den Skriptnamen),%~p0
den Pfad.quelle
Einige Fallstricke, auf die Sie achten sollten:
Wenn Sie doppelklicken, wird die Batchdatei
%0
von Anführungszeichen umgeben. Wenn Sie diese Datei beispielsweise speichern alsc:\test.bat
:Durch Doppelklicken wird eine neue Eingabeaufforderung mit Ausgabe geöffnet:
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 eingebentest.bat
Enter, enthält die Ausgabe von%0
keine Anführungszeichen, da Sie keine Anführungszeichen eingegeben haben:Wenn Sie eingeben
test
Enter, hat die Ausgabe von%0
auch keine Erweiterung, da Sie keine Erweiterung eingegeben haben:Gleiches gilt für
tEsT
Enter:Wenn Sie eingeben
"test"
Enter, enthält die Ausgabe von%0
Anführungszeichen (da Sie sie eingegeben haben), jedoch keine Erweiterung:Wenn Sie schließlich eingeben
"C:\test.bat"
, ist die Ausgabe genau so, als hätten Sie darauf doppelklicken:Beachten Sie, dass dies nicht alle möglichen Werte sein
%0
können, da Sie das Skript aus anderen Ordnern aufrufen können: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.quelle
Dieser Code erklärt die Verwendung des ~ tilda-Zeichens, was für mich am verwirrendsten war. Sobald ich das verstanden habe, ist es viel einfacher zu verstehen:
quelle
Es zeigt den aktuellen Speicherort der Datei oder des Verzeichnisses an, in dem Sie sich gerade befinden. Wenn sich Ihre Batchdatei im Desktop-Verzeichnis befindet, zeigt "% ~ dp0" das Desktop-Verzeichnis an. Wenn Sie möchten, dass das aktuelle Verzeichnis mit dem aktuellen Dateinamen angezeigt wird, können Sie "% ~ dp0% ~ n0% ~ x0" eingeben.
quelle