Ich weiß, dass %0
der vollständige Pfad des Batch-Skripts enthalten ist, zc:\path\to\my\file\abc.bat
Ich würde path
gleich seinc:\path\to\my\file
Wie könnte ich das erreichen?
windows
batch-file
Mischa Moroshko
quelle
quelle
Antworten:
%~dp0
wird das Verzeichnis sein. Hier finden Sie eine Dokumentation zu allen Pfadmodifikatoren . Lustige Sachen :-)Um den endgültigen Backslash zu entfernen, können Sie die
:n,m
Teilzeichenfolgensyntax wie folgt verwenden:Ich glaube leider nicht, dass es eine Möglichkeit gibt, die
%0
Syntax mit der:~n,m
Syntax zu kombinieren .quelle
%~0\..
- wusste, dass es einen besseren Weg geben musste! Außerdem sollten Sie wahrscheinlich%~dp0
doppelte Anführungszeichen (""
) einfügen, falls der Verzeichnisname Leerzeichen enthält usw.%~dp0
enthält die `` am Ende. Haben Sie eine Idee, wie Sie es entfernen können?SET msg=hello world
funktioniert gut). Wenn Sie jedoch% mypath% an anderer Stelle verwenden, sollten Sie darauf achten, es in Anführungszeichen zu verwenden, obwohl sie auch nicht benötigtcd
werden.Sie können das folgende Skript verwenden, um den Pfad abzurufen, ohne "\"
quelle
%~dp0
kann ein relativer Pfad sein. Versuchen Sie Folgendes, um es in einen vollständigen Pfad umzuwandeln:quelle
%~dp0
direkt verwenden?%~dp0
kann relativ sein, was je nach Anwendungsfall ein Problem sein kann oder nicht%~dp0
kann keinen relativen Pfad enthalten,d
steht für Laufwerk undp
für Pfad, wie könnte ein Laufwerk relativ sein?%~dp0
, dass sie ein absoluter Pfad ist, selbst wenn das Skript als relativer Pfad ausgeführt wurde. Dank Jebs Kommentar ließ ich mich von dieser Antwort nicht täuschen. Warum erfinden die Leute einfach Sachen und verbreiten ihre wilde Fantasie an andere. Ich habe diesen Kollegen, der das tut, aber ich habe sein (junges) Alter beschuldigt. Ich wünschte, meine Ablehnung würde zählen.Sie können verwenden
%~dp0
, d bedeutet nur das Laufwerk, p bedeutet nur den Pfad, 0 ist das Argument für den vollständigen Dateinamen der Batchdatei.Wenn der Dateipfad beispielsweise C: \ Users \ Oliver \ Desktop \ example.bat lautet, entspricht das Argument C: \ Users \ Oliver \ Desktop \. Sie können auch den Befehl verwenden
set cpath=%~dp0 && set cpath=%cpath:~0,-1%
und die%cpath%
Variable verwenden, um den abschließenden Schrägstrich zu entfernen.quelle
%cd%
gibt Ihnen den Pfad des Verzeichnisses an, in dem das Skript ausgeführt wird.Renn einfach:
quelle
%CD%
ist der aktuelle Arbeitsordner, nicht der Ordner, in dem die Batchdatei gespeichert ist. Sie können am selben Ort sein, sind es aber oft nicht.Das wäre die
%CD%
Variable.%CD%
Gibt das aktuelle Verzeichnis zurück, in dem sich das Batch-Skript befindet.quelle
CD C:\Temp <CR> ECHO %CD%
(<CR>
ist Newline ...)Ich arbeite auf einem Windows 7-Computer und habe am Ende die folgenden Zeilen verwendet, um den absoluten Ordnerpfad für mein Bash-Skript abzurufen.
Ich bin zu dieser Lösung gekommen, nachdem ich mir http://www.linuxjournal.com/content/bash-parameter-expansion angesehen habe .
quelle