Команда оболонки Windows, щоб отримати повний шлях до поточного каталогу?


223

Чи є команда командного рядка Windows, яку я можу використовувати, щоб отримати повний шлях до поточного робочого каталогу?

Крім того, як я можу зберігати цей шлях всередині змінної, що використовується у пакетному файлі?


find / dir / to / start / from -type f -ls Цей формат дату для числового знаходження / dir / to / start / from -type f -exec ls -l --time-style = "+% Y% m% e% H:% M "{} \;

поглянути на цьому відповідь stackoverflow.com/a/52301748/2704032
Vishrant

Відповіді:


356

Використовуйте cdбез аргументів, якщо ви використовуєте оболонку безпосередньо або %cd%якщо ви хочете використовувати її в пакетному файлі (він поводиться як змінна середовище).


11
Як ти зрозумів, що він намагався сказати з цього ? І, під дос і windows cmd, його зазвичай просто "cd"
Rook

10
Чесно кажучи, я не міг придумати нічого іншого, що вони могли б намагатися задати, як було зазначено в питанні.
Тревор Брамбл

1
Чи можна зберігати цей шлях всередині змінної у файлі .bat?
користувач62958

@unknown - вам може бути краще, описуючи в першу чергу оригінальну проблему.
Грак

100

Ви можете встановити змінну партії / середовища таким чином:

SET var=%cd%
ECHO %var%

зразок скріншоту з Windows 7 x64 cmd.exe.

введіть тут опис зображення

Оновлення: якщо ви робитеSET var = %cd%замістьSET var=%cd%, нижче, що відбувається. Завдяки джеб.

введіть тут опис зображення

Захоплення поточного каталогу з пакетного файлу


2
Відповідно до запитання, ця відповідь фактично повинна бути прийнятою.
Рене Ніффенеггер

7
Але це не працює, оскільки SET var = %cd%значення змінної var<space>не ставиться var. Вам слід уникати пробілів у команді SET
1313

1
Відповідно до запитання, ця відповідь фактично повинна бути прийнятою.
shridutt kothari

51

Цитуйте довідку Windows для setкоманди ( set /?):

Якщо розширення команд увімкнено, є кілька динамічних
змінні середовища, які можна розширити, але які не відображаються в
список змінних, що відображається SET. Ці змінні значення є
обчислюється динамічно щоразу, коли значення змінної розширюється.
Якщо користувач явно визначає змінну з одним із цих імен, то
це визначення замінить динамічне, описане нижче:

% CD% - розширюється на поточний рядок каталогу.

% DATE% - розширюється до поточної дати, використовуючи той самий формат, що і команда DATE.

% TIME% - розширюється до поточного часу, використовуючи той самий формат, що і команда TIME.

% RANDOM% - розширюється до випадкового десяткового числа між 0 і 32767.

% ERRORLEVEL% - розширюється до поточного значення ERRORLEVEL

% CMDEXTVERSION% - розширюється до поточних розширень командного процесора
    номер версії

% CMDCMDLINE% - розширюється на початковий командний рядок, який викликав
    Командний процесор.

Зверніть увагу на %CD% - expands to the current directory string.частину.


26

У Unix?

pwd


2
OP спочатку просив "команду" і не вказував ОС. ОС тепер визначена, тому ця відповідь більше не є актуальною.
Тиш


17

Це завжди працювало для мене:

SET CurrentDir="%~dp0"

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

ECHO %CurrentDir%

Pause

2
Це робиться неправильно - знаходить шлях пакетного сценарію, а не поточний каталог.
Гаррі Джонстон

2
Оновлено через відповідь на питання ОП ... і дав точне рішення, яке я шукав. Дякую!
A-Diddy

Гарний улов. Поточний каталог може посилатися на команду, яка викликає файл, а не саме його розташування.
Там Ле

9

Для Windows cdсама по собі покаже вам поточний робочий каталог.

Для UNIX та роботоподібних систем pwdбуде виконувати те саме завдання. Ви також можете використовувати $PWDзмінну оболонки під деякими оболонками. Я не впевнений, підтримує Windows отримання поточного робочого каталогу через змінну оболонки чи ні.


Однак я не можу зрозуміти, для чого йому потрібен "cd", щоб побачити свого поточного режисера. За замовчуванням він видно як день. І якщо він його змінив, то він, звичайно, знає, що робить "CD".
Грак

дуже старий, але просто для повноти: так, вікна для цього є різними. Він названий (здогадайтесь ...)%cd%
Стефан

8

У Windows:

CHDIR Відображає назву або змінює поточний каталог.

У Linux:

PWD Відображає ім'я поточного каталогу.


5

На підставі подальшого запитання (збереження даних у змінній) у коментарях до chdir post Я ставлюся до обліку, що він хоче зберегти поточний шлях до відновлення після зміни каталогів.

Початковий користувач повинен дивитись на "pushd", який змінює каталог і висуває поточну на стек, який можна відновити за допомогою "popd". На будь-якій сучасній оболонці Windows cmd, яка є шлях для створення пакетних файлів.

Якщо вам дійсно потрібно схопити поточний шлях, то в сучасних оболонках cmd також є змінна% CD%, яку ви можете легко заповнити в іншій змінній для довідки.


5

Створіть .batфайл під іншим System32, назвемо його copypath.batкоманду , щоб скопіювати поточний шлях може бути :

echo %cd% | clip

Пояснення:

%cd% дасть вам поточний шлях

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.

Тепер copyclipце доступно звідусіль.


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

Але, звичайно , відповідь gmaran23 набагато простіша.


Його відповідь краще за визначенням, оскільки ваша відповідь неправильна. Це не працює для доріжок з пробілами.
Гаррік

Додавання tokens=*виправлень, що.
Рене Ніффенеггер

2

У командному рядку Windows chdirабо cdнадрукується повний шлях поточного робочого каталогу на консолі.

Якщо ми хочемо , щоб скопіювати шлях , то ми можемо використовувати: cd | clip.


0

У Windows введіть cdробочий поточний шлях.

У Linux pwdдля поточного робочого шляху.


5
Вже є 10 відповідей з тим же рішенням, але більше пояснень
jeb

0

Як один із можливих кодів

    echo off
    for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
    echo The current directory is: "%var:~1%"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.