Polecenie powłoki systemu Windows, aby uzyskać pełną ścieżkę do bieżącego katalogu?


223

Czy istnieje polecenie wiersza polecenia systemu Windows, którego można użyć, aby uzyskać pełną ścieżkę do bieżącego katalogu roboczego?

Jak mogę zapisać tę ścieżkę w zmiennej używanej w pliku wsadowym?


find / dir / to / start / from -type f -ls Formatuje datę na wartość liczbową find / dir / to / start / from -type f -exec ls -l --time-style = "+% Y% m% e% H:% M "{} \;

spójrz na tę odpowiedź stackoverflow.com/a/52301748/2704032
Vishrant

Odpowiedzi:


356

Użyj cdbez argumentów, jeśli używasz powłoki bezpośrednio lub %cd%jeśli chcesz użyć jej w pliku wsadowym (zachowuje się jak zmienna środowiskowa).


11
Jak zrozumiałeś, co on chciał z tego powiedzieć ? A pod dos i windows cmd zwykle jest to po prostu „cd”
Rook

10
Szczerze mówiąc, nie mogłem wymyślić niczego innego, o co mogliby się zapytać, jak na to pytanie.
Trevor Bramble

1
Czy mogę zapisać tę ścieżkę w zmiennej w pliku .bat?
user62958,

@unknown - najlepiej byłoby opisać pierwotny problem.
Rook

100

Możesz ustawić zmienną wsadową / środowiskową w następujący sposób:

SET var=%cd%
ECHO %var%

przykładowy zrzut ekranu z Windows 7 x64 cmd.exe.

wprowadź opis zdjęcia tutaj

Aktualizacja: jeśli zrobiszSET var = %cd%zamiastSET var=%cd%, poniżej, co się stanie. Dzięki jeb.

wprowadź opis zdjęcia tutaj

Przechwytywanie bieżącego katalogu z pliku wsadowego


2
Zgodnie z pytaniem ta odpowiedź powinna być faktycznie zaakceptowana.
René Nyffenegger,

7
Ale to nie działa, jak SET var = %cd%umieścić wartość w zmiennej var<space>nie do var. Powinieneś unikać spacji w poleceniu SET
jeb

1
Zgodnie z pytaniem ta odpowiedź powinna być faktycznie zaakceptowana.
shridutt kothari

51

Cytuj pomoc systemu Windows dla setpolecenia ( set /?):

Jeśli rozszerzenia poleceń są włączone, istnieje kilka dynamicznych
zmienne środowiskowe, które można rozwinąć, ale które się nie wyświetlają
lista zmiennych wyświetlanych przez SET. Te wartości zmiennych to
obliczany dynamicznie za każdym razem, gdy wartość zmiennej jest rozszerzana.
Jeśli użytkownik wyraźnie zdefiniuje zmienną o jednej z tych nazw, wówczas
definicja ta zastąpi definicję dynamiczną opisaną poniżej:

% CD% - rozwija się do bieżącego ciągu katalogu.

% DATE% - rozwija się do bieżącej daty przy użyciu tego samego formatu, co polecenie DATA.

% TIME% - rozwija się do bieżącego czasu przy użyciu tego samego formatu co polecenie CZAS.

% RANDOM% - rozwija się do losowej liczby dziesiętnej od 0 do 32767.

% ERRORLEVEL% - rozwija się do bieżącej wartości ERRORLEVEL

% CMDEXTVERSION% - rozwija się do bieżących rozszerzeń procesora poleceń
    numer wersji.

% CMDCMDLINE% - rozwija się do pierwotnego wiersza poleceń, który wywołał
    Procesor poleceń.

Zwróć uwagę na %CD% - expands to the current directory string.część.


26

Na Uniksie?

pwd


2
OP pierwotnie poprosił o „polecenie” i nie określił systemu operacyjnego. System operacyjny został już określony, więc ta odpowiedź nie jest już aktualna.
Tisch

18

Do systemu Windows możemy użyć

cd

i dla Linuksa

pwd

polecenie jest tam.


17

To zawsze działało dla mnie:

SET CurrentDir="%~dp0"

ECHO The current file path this bat file is executing in is the following:

ECHO %CurrentDir%

Pause

2
Robi to źle - znajduje ścieżkę skryptu wsadowego, a nie bieżący katalog.
Harry Johnston,

2
Głosowano za odpowiedź na pytanie PO ... i podanie dokładnie tego rozwiązania, którego szukałem. Dzięki!
A-Diddy

Dobry chwyt. Bieżący katalog może odnosić się do polecenia, które wywołuje plik, zamiast samej lokalizacji pliku.
Tam Le

9

W przypadku systemu Windows cdsam pokaże bieżący katalog roboczy.

W systemach UNIX i podobnych, pwdwykona to samo zadanie. Możesz także użyć $PWDzmiennej powłoki pod niektórymi powłokami. Nie jestem pewien, czy Windows obsługuje pobieranie bieżącego katalogu roboczego przez zmienną powłoki, czy nie.


Nie rozumiem jednak, dlaczego potrzebuje „cd”, aby zobaczyć swój aktualny reż. Domyślnie jest widoczny jako dzień. A jeśli to zmienił, to z pewnością wie, co robi „cd”.
Rook

bardzo stare, ale dla kompletności: tak, Windows ma w tym celu zmienną. Jego nazwa (zgadnij ...)%cd%
Stephan

8

W systemie Windows:

CHDIR Wyświetla nazwę lub zmienia bieżący katalog.

W systemie Linux:

PWD Wyświetla nazwę bieżącego katalogu.


5

Na podstawie pytania uzupełniającego (przechowującego dane w zmiennej) w komentarzach do postu chdir założę się, że chce zapisać bieżącą ścieżkę, aby przywrócić ją po zmianie katalogów.

Pierwotny użytkownik powinien spojrzeć na „pushd”, który zmienia katalog i wypycha bieżącego na stos, który można przywrócić za pomocą „popd”. Na każdej nowoczesnej powłoce cmd systemu Windows, która jest odpowiednia podczas tworzenia plików wsadowych.

Jeśli naprawdę potrzebujesz złapać bieżącą ścieżkę, nowoczesne powłoki cmd mają również zmienną% CD%, którą możesz łatwo umieścić w innej zmiennej w celach informacyjnych.


5

Utwórz .batplik pod System32, nazwijmy go copypath.batpoleceniem skopiowania bieżącej ścieżki może być :

echo %cd% | clip

Objaśnienie:

%cd% poda aktualną ścieżkę

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.

Teraz copyclipjest dostępny zewsząd.


3
@echo off
for /f "usebackq tokens=*" %%x in (`chdir`) do set var=%%x
echo The currenct directory is: %var%

Ale oczywiście odpowiedź gmaran23 jest znacznie łatwiejsza.


Jego odpowiedź jest z definicji lepsza, ponieważ twoja odpowiedź jest zła. Nie działa dla ścieżek ze spacjami.
Garric

Dodanie tokens=*naprawia to.
René Nyffenegger

2

W wierszu polecenia systemu Windows chdirlub cdwydrukuje pełną ścieżkę bieżącego katalogu roboczego w konsoli.

Jeśli chcemy skopiować ścieżkę wtedy możemy użyć: cd | clip.


0

W systemie Windows wpisz cddziałającą bieżącą ścieżkę.

W systemie Linux pwddla bieżącej ścieżki roboczej.


5
Istnieje już 10 odpowiedzi z tym samym rozwiązaniem, ale więcej wyjaśnień
jeb

0

Jako jeden z możliwych kodów

    echo off
    for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
    echo The current directory is: "%var:~1%"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.