Каков текущий каталог в командном файле? - PullRequest
423 голосов
/ 12 декабря 2010

Я хочу создать несколько командных файлов для автоматизации программы.

У меня вопрос, когда я создаю командный файл, каков текущий каталог? Это каталог, в котором находится файл, или это тот же каталог, который отображается в командной строке, или что-то еще?

Ответы [ 7 ]

885 голосов
/ 12 декабря 2010

Из вашего пакетного файла:

  • %cd% относится к текущему рабочему каталогу (переменная)
  • %~dp0 относится к полному путик каталогу пакетного файла (статический)
  • %~dpnx0 и %~f0 оба ссылаются на полный путь к каталогу пакетного файла и имени файла (статический).
24 голосов
/ 12 декабря 2010

Это обычно - это каталог, из которого запускается пакетный файл, но если вы запускаете пакетный файл с ярлыка, может быть указан другой начальный каталог.Кроме того, когда вы находитесь в cmd, а ваш текущий каталог c:\dir3, вы все равно можете запустить пакетный файл, используя c:\dir1\dir2\batch.bat, и в этом случае текущий каталог будет c:\dir3.

10 голосов
/ 11 августа 2017

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

set mypath=%cd%
echo %mypath% (where %mypath% is the current directory that the batch file is sitting in)

Допустим, вы хотели открыть Myprog.exe.Если бы он был в той же папке, вы бы использовали команду:

start %mypath%\Myprog.exe

Это откроет Myprog из текущей папки.

Другой вариант - создать каталог в C: namedAutomatePrograms.Затем вы переносите свои файлы в эту папку, а затем можете открыть их с помощью следующей команды:

start "" "C:\AutomatePrograms\Myprog1.exe"
start "" "C:\AutomatePrograms\Myprog2.exe"
start "" "C:\AutomatePrograms\Myprog3.exe"
5 голосов
/ 19 сентября 2017

Это каталог, из которого вы запускаете команду для запуска вашего пакетного файла.

Как уже упоминалось в ответах выше, вы можете добавить следующую команду в ваш скрипт для проверки:

> set current_dir=%cd%
> echo %current_dir%  
5 голосов
/ 12 декабря 2010

Это каталог, из которого вы запускаете пакетный файл.Например, если ваш пакет находится в c:\dir1\dir2, а вы делаете cd c:\dir3, а затем запустите пакет, текущий каталог будет c:\dir3.

4 голосов
/ 06 апреля 2017

Скажем, вы открывали файл в вашем текущем каталоге.Команда будет выглядеть так:

 start %cd%\filename.filetype

Надеюсь, я ответил на ваш вопрос.

0 голосов
/ 18 апреля 2019

Просто мои 2 цента.Следующая команда не выполняется, если она вызывается из пакетного файла (Windows 7), размещенного на pendrive:

xcopy /s /e /i %cd%Ala C:\KS\Ala

Но это делает работу:

xcopy /s /e /i %~dp0Ala C:\KS\Ala
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...