Windows-Shell-Befehl, um den vollständigen Pfad zum aktuellen Verzeichnis abzurufen?

222

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?

user62958
quelle
find / dir / to / start / from -type f -ls Dieses Format formatiert das Datum für die numerische Suche / dir / to / start / from -type f -exec ls -l --time-style = "+% Y% m% e% H:% M {} \;
Schauen Sie sich diese Antwort an stackoverflow.com/a/52301748/2704032
Vishrant

Antworten:

354

Verwenden Sie cdohne 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).

Trevor Bramble
quelle
11
Wie haben Sie verstehen, was er versuchte , aus zu sagen , dass ? Und unter dos und windows cmd ist es normalerweise nur "cd"
Rook
10
Ehrlich gesagt, ich konnte mir nichts anderes vorstellen, was sie versuchen könnten, wie in der Frage angegeben.
Trevor Bramble
1
Kann ich diesen Pfad in einer Variablen in einer .bat-Datei speichern?
user62958
@unknown - Sie könnten besser dran sein, wenn Sie zuerst das ursprüngliche Problem beschreiben.
Turm
100

Sie können eine Stapel- / Umgebungsvariable wie folgt festlegen:

SET var=%cd%
ECHO %var%

Beispiel-Screenshot von einer Windows 7 x64 cmd.exe.

Geben Sie hier die Bildbeschreibung ein

Update: Wenn Sie einSET var = %cd%statttunSET var=%cd%, ist unten, was passiert. Danke an jeb.

Geben Sie hier die Bildbeschreibung ein

Erfassen des aktuellen Verzeichnisses aus einer Batchdatei

gmaran23
quelle
2
Entsprechend der Frage sollte diese Antwort tatsächlich die akzeptierte sein.
René Nyffenegger
7
Aber es funktioniert nicht, da SET var = %cd%der Wert in der Variablen var<space>nicht in var. Sie sollten Leerzeichen im Befehl SET vermeiden
jeb
1
Entsprechend der Frage sollte diese Antwort tatsächlich die akzeptierte sein.
Shridutt Kothari
50

Zitieren Sie die Windows-Hilfe für den setBefehl ( 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.

Patrick Manschette
quelle
26

Unter Unix?

pwd

Stephen Curial
quelle
2
OP hat ursprünglich nach einem "Befehl" gefragt und kein Betriebssystem angegeben. Das Betriebssystem wurde jetzt angegeben, sodass diese Antwort nicht mehr relevant ist.
Tisch
18

Für Windows können wir verwenden

cd

und für Linux

pwd

Befehl ist da.

Nikunj K.
quelle
17

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
Fred Scales
quelle
2
Das macht das Falsche - findet den Pfad des Batch-Skripts, nicht das aktuelle Verzeichnis.
Harry Johnston
2
Upvoted aufgrund der Beantwortung der Frage des OP ... und der genauen Lösung, die ich gesucht habe. Vielen Dank!
A-Diddy
Schöner Fang. Das aktuelle Verzeichnis kann auf den Befehl verweisen, der die Datei anstelle des Speicherorts der Datei selbst aufruft.
Tam Le
9

Für Windows cdwird Ihnen das aktuelle Arbeitsverzeichnis angezeigt.

Führt für UNIX- und Workalike-Systeme pwddieselbe Aufgabe aus. Sie können die $PWDShell-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.

Michael Trausch
quelle
Ich kann jedoch nicht verstehen, warum er "cd" braucht, um sein aktuelles Verzeichnis zu sehen. Standardmäßig ist es als Tag sichtbar. Und wenn er es geändert hat, weiß er sicher, was "cd" macht.
Turm
sehr alt, aber der Vollständigkeit halber: Ja, Windows hat dafür eine Variable. Es heißt (rate mal ...)%cd%
Stephan
8

Unter Windows:

CHDIR Zeigt den Namen des aktuellen Verzeichnisses an oder ändert es.

Unter Linux:

PWD Zeigt den Namen des aktuellen Verzeichnisses an.

Ajay Jayavarapu
quelle
5

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.

Kennzeichen
quelle
5

Erstellen Sie eine .batDatei unter System32, sagen wir es nennen copypath.batden 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 copyclipist von überall verfügbar.

Vishrant
quelle
3
@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.

René Nyffenegger
quelle
Seine Antwort ist per Definition besser, weil Ihre Antwort falsch ist. Es funktioniert nicht für Pfade mit Leerzeichen.
Garric
Das Hinzufügen tokens=*behebt das.
René Nyffenegger
2

In einer Windows-Eingabeaufforderung chdiroder cddruckt der vollständige Pfad des aktuellen Arbeitsverzeichnisses in der Konsole.

Wenn wir den Pfad kopieren möchten, können wir verwenden : cd | clip.

Samrat Debroy
quelle
0

Geben Sie unter Windows cdden aktuellen Arbeitspfad ein.

Unter Linux pwdfür den aktuellen Arbeitspfad.

Shafeer Khan
quelle
5
Es gibt bereits 10 Antworten mit der gleichen Lösung, aber mehr Erklärungen
jeb
0

Als einer der möglichen Codes

    echo off
    for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
    echo The current directory is: "%var:~1%"
Garric
quelle