Команда оболочки 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
Вишрант

Ответы:


356

Используйте cdбез аргументов, если вы используете оболочку напрямую или %cd%если вы хотите использовать ее в командном файле (она ведет себя как переменная окружения).


11
Как вы поняли, что он пытался сказать из этого ? И, под DOS и Windows CMD, его обычно просто "CD"
Ладья

10
Честно говоря, я не мог думать ни о чем другом, что они могли бы попытаться задать, когда вопрос был сформулирован.
Тревор Брамбл

1
Могу ли я сохранить этот путь внутри переменной в файле .bat?
user62958

@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
Джеб

1
Согласно вопросу, этот ответ должен быть принятым.
Шридутт Котари

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
ОП первоначально запросил «команду» и не указал ОС. ОС была указана, поэтому этот ответ больше не актуален.
Тиш


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".
Ладья

очень старый, но только для полноты: да, в Windows есть переменная для этого. Он назван (угадайте ...)%cd%
Стефан


5

Основываясь на последующем вопросе (сохранить данные в переменной) в комментариях к посту chdir, я держу пари, что он хочет сохранить текущий путь, чтобы восстановить его после смены каталогов.

Первоначальный пользователь должен посмотреть на «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 ответов с тем же решением, но больше объяснений
Джеб

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.