Gibt es einen Windows-Befehlszeilenbefehl, mit dem ich den vollständigen Pfad zum aktuellen Arbeitsverzeichnis abrufen kann?
Wie kann ich diesen Pfad auch in einer Variablen speichern, die in einer Batchdatei verwendet wird?
Gibt es einen Windows-Befehlszeilenbefehl, mit dem ich den vollständigen Pfad zum aktuellen Arbeitsverzeichnis abrufen kann?
Wie kann ich diesen Pfad auch in einer Variablen speichern, die in einer Batchdatei verwendet wird?
Antworten:
Verwenden Sie cd
ohne Argumente, wenn Sie die Shell direkt verwenden oder %cd%
wenn Sie sie in einer Batchdatei verwenden möchten (sie verhält sich wie eine Umgebungsvariable).
Sie können eine Stapel- / Umgebungsvariable wie folgt festlegen:
SET var=%cd%
ECHO %var%
Beispiel-Screenshot von einer Windows 7 x64 cmd.exe.
Update: Wenn Sie einSET var = %cd%
statttunSET var=%cd%
, ist unten, was passiert. Danke an jeb.
SET var = %cd%
der Wert in der Variablen var<space>
nicht in var
. Sie sollten Leerzeichen im Befehl SET vermeiden
Zitieren Sie die Windows-Hilfe für den set
Befehl ( set /?
):
Wenn Befehlserweiterungen aktiviert sind, gibt es mehrere dynamische Umgebungsvariablen, die erweitert werden können, aber nicht in angezeigt werden die Liste der von SET angezeigten Variablen. Diese variablen Werte sind Wird jedes Mal dynamisch berechnet, wenn der Wert der Variablen erweitert wird. Wenn der Benutzer explizit eine Variable mit einem dieser Namen definiert, dann Diese Definition überschreibt die unten beschriebene dynamische: % CD% - wird auf die aktuelle Verzeichniszeichenfolge erweitert. % DATE% - Wird mit demselben Format wie der Befehl DATE auf das aktuelle Datum erweitert. % TIME% - wird mit demselben Format wie der Befehl TIME auf die aktuelle Zeit erweitert. % RANDOM% - wird auf eine zufällige Dezimalzahl zwischen 0 und 32767 erweitert. % ERRORLEVEL% - wird auf den aktuellen ERRORLEVEL-Wert erweitert % CMDEXTVERSION% - wird auf die aktuellen Befehlsprozessorerweiterungen erweitert Versionsnummer. % CMDCMDLINE% - wird auf die ursprüngliche Befehlszeile erweitert, die das aufgerufen hat Befehlsprozessor.
Beachten Sie den %CD% - expands to the current directory string.
Teil.
Unter Unix?
pwd
Das hat bei mir immer funktioniert:
SET CurrentDir="%~dp0"
ECHO The current file path this bat file is executing in is the following:
ECHO %CurrentDir%
Pause
Für Windows cd
wird Ihnen das aktuelle Arbeitsverzeichnis angezeigt.
Führt für UNIX- und Workalike-Systeme pwd
dieselbe Aufgabe aus. Sie können die $PWD
Shell-Variable auch unter einigen Shells verwenden. Ich bin nicht sicher, ob Windows das Abrufen des aktuellen Arbeitsverzeichnisses über eine Shell-Variable unterstützt oder nicht.
%cd%
Unter Windows:
CHDIR Zeigt den Namen des aktuellen Verzeichnisses an oder ändert es.
Unter Linux:
PWD Zeigt den Namen des aktuellen Verzeichnisses an.
Basierend auf der Folgefrage (Speichern der Daten in einer Variablen) in den Kommentaren zum chdir-Beitrag wette ich, dass er den aktuellen Pfad speichern möchte, um ihn nach dem Ändern der Verzeichnisse wiederherzustellen.
Der ursprüngliche Benutzer sollte sich "pushd" ansehen, wodurch das Verzeichnis geändert und das aktuelle auf einen Stapel verschoben wird, der mit einem "popd" wiederhergestellt werden kann. Auf jeder modernen Windows-Cmd-Shell ist dies der richtige Weg, um Batch-Dateien zu erstellen.
Wenn Sie wirklich den aktuellen Pfad abrufen müssen, haben moderne cmd-Shells auch eine% CD% -Variable, die Sie einfach als Referenz in eine andere Variable einfügen können.
Erstellen Sie eine .bat
Datei unter System32
, sagen wir es nennen copypath.bat
den Befehl Strompfad zu kopieren sein könnte :
echo %cd% | clip
Erläuterung:
%cd%
Gibt den aktuellen Pfad an
CLIP
Description:
Redirects output of command line tools to the Windows clipboard.
This text output can then be pasted into other programs.
Parameter List:
/? Displays this help message.
Examples:
DIR | CLIP Places a copy of the current directory
listing into the Windows clipboard.
CLIP < README.TXT Places a copy of the text from readme.txt
on to the Windows clipboard.
Jetzt copyclip
ist von überall verfügbar.
@echo off
for /f "usebackq tokens=*" %%x in (`chdir`) do set var=%%x
echo The currenct directory is: %var%
Aber natürlich ist die Antwort von gmaran23 die viel einfachere.
tokens=*
behebt das.
In einer Windows-Eingabeaufforderung chdir
oder cd
druckt der vollständige Pfad des aktuellen Arbeitsverzeichnisses in der Konsole.
Wenn wir den Pfad kopieren möchten, können wir verwenden : cd | clip
.
Geben Sie unter Windows cd
den aktuellen Arbeitspfad ein.
Unter Linux pwd
für den aktuellen Arbeitspfad.