Каков текущий каталог в пакетном файле?
Я хочу создать несколько командных файлов для автоматизации программы.
Мой вопрос: когда я создаю командный файл, какой каталог является текущим? Это каталог, в котором находится файл, или это тот же каталог, который отображается в командной строке, или что-то еще?
Ответы
Ответ 1
Из вашего командного файла:
-
%cd%
ссылается на текущий рабочий каталог (переменная) -
%~dp0
указывает на полный путь к каталогу пакетных файлов (статический) -
%~dpnx0
и %~f0
оба ссылаются на полный путь к каталогу пакета и имя файла (статический).
Ответ 2
Обычно это каталог, из которого запущен командный файл, но если вы запускаете командный файл из ярлыка, может быть задан другой стартовый каталог. Кроме того, когда вы находитесь в cmd, а ваш текущий каталог c:\dir3
, вы все равно можете запустить командный файл с помощью c:\dir1\dir2\batch.bat
, в этом случае текущий каталог будет c:\dir3
.
Ответ 3
В пакетном файле% 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: с именем AutomatePrograms. Затем вы переносите свои файлы в эту папку, а затем можете открыть их с помощью следующей команды:
start "" "C:\AutomatePrograms\Myprog1.exe"
start "" "C:\AutomatePrograms\Myprog2.exe"
start "" "C:\AutomatePrograms\Myprog3.exe"
Ответ 4
Это каталог, из которого вы запускаете командный файл. Например. если ваша партия находится в c:\dir1\dir2
, и вы выполняете cd c:\dir3
, затем запустите пакет, текущий каталог будет c:\dir3
.
Ответ 5
Это каталог, из которого вы запускаете команду для выполнения командного файла.
Как уже упоминалось в приведенных выше ответах, вы можете добавить следующую команду в свой script, чтобы проверить:
> set current_dir=%cd%
> echo %current_dir%
Ответ 6
Предположим, вы открыли файл в своем текущем каталоге. Команда будет следующей:
start %cd%\filename.filetype
Надеюсь, я ответил на ваш вопрос.
Ответ 7
При попытке открыть файл bat в режиме администратора следующая команда не выполняется (мне нужно выполнить некоторые команды в существующих рабочих каталогах).
установить mypath =% cd%
cd% mypath%
Но это работает нормально
установить mypath =% ~ dp0
cd mypath
Ответ 8
Просто мои 2 цента. Следующая команда не выполняется, если она вызывается из пакетного файла (Windows 7), размещенного на pendrive:
xcopy /s /e /i %cd%Ala C:\KS\Ala
Но это делает работу:
xcopy /s /e /i %~dp0Ala C:\KS\Ala