2010-12-12 3 views
318

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

Мой вопрос в том, когда я создаю пакетный файл. Каков текущий каталог? Это каталог, в котором находится файл, или он является тем же самым каталогом, который отображается в cmd?

ответ

660

Изнутри пакетный файл:

  • %cd% даст вам current working directory (переменная)
  • %~dp0 даст вам полный путь к директории пакетного файла (статический)
+5

@ Јοеу - '% 0' может дать имя текущей подпрограммы, но'% ~ dp0' ** всегда ** дает полный путь к исполняемому пакетному файлу. – dbenham

+68

На самом деле это выглядит как% ~ dp0 дает полный путь к * каталогу *, в котором находится исполняемый командный файл.% ~ Dpnx0 (что эквивалентно% ~ f0) дает полный путь к пакетному файлу. Подробнее см. Http://www.robvanderwoude.com/parameters.php. – deadlydog

+5

См. Также подробные ответы на аналогичный вопрос: [Получить список переданных аргументов в пакетном скрипте Windows (.bat)] (http: // stackoverflow.com/q/357315/938111) – olibre

3

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

20

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

2

Предположим, вы открыли файл в своем текущем каталоге. Команда будет:

start %cd%\filename.filetype 

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

5

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

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: AutomatePrograms. Затем перенести файлы в эту папку, то вы можете открыть их с помощью следующей команды:

start C:\AutomatePrograms\Myprog1.exe 
start C:\AutomatePrograms\Myprog2.exe 
start C:\AutomatePrograms\Myprog3.exe 
+0

Как указано в верхнем ответе здесь, '% cd%' является переменной, поэтому запуск командного файла из проводника Windows, поскольку admin предоставит 'C: \ WINDOWS \ system32', который почти наверняка не то, что вы хотите. '% ~ dp0' более согласован. – icc97

2

Это каталог, где вы запустите команду, чтобы выполнить пакетный файл.

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

> set current_dir=%cd% 
> echo %current_dir% 
Смежные вопросы