Командная строка.УМК./bat script, как получить каталог запущенного скрипта
Как вы можете получить каталог скрипта, который был запущен и использовать его в пределах .файл cmd?
3 ответа:
у Раймонда Чена есть несколько идей:
http://blogs.msdn.com/oldnewthing/archive/2005/01/28/362565.aspx
цитируется здесь полностью, потому что архивы MSDN, как правило, несколько ненадежны:
простой способ-использовать
%CD%
псевдо-переменной. Он расширяется до текущий рабочий каталог.
set OLDDIR=%CD%
.. do stuff ..
chdir /d %OLDDIR% &rem restore current directory
(конечно, каталог сохранить / восстановить может быть более легко иметь было сделано с
pushd
/popd
, но дело не в этом.)The
%CD%
трюк удобен даже из командной строки. Например, я часто оказываюсь в директории, где есть файл, который я хочу работать на но... о, мне нужно chdir в какой-то другой каталог, чтобы чтобы выполнить эту операцию.
set _=%CD%\curfile.txt
cd ... some other directory ...
somecommand args %_% args
(мне нравится использовать
%_%
как моя переменная среды царапины.)тип
SET /?
чтобы увидеть другие псевдо-переменные, предоставляемые командой процессор.также комментарии в статье хорошо стоит проверить, например, этот:
http://blogs.msdn.com/oldnewthing/archive/2005/01/28/362565.aspx#362741
это охватывает использование %~dp0:
если вы хотите знать, где пакетный файл живет:
%~dp0
%0
- имя пакетного файла.~dp
дает вам привод и путь указанный аргумент.
это эквивалентно пути скрипта:
%~dp0
используется синтаксис расширения параметров пакета. Параметр 0-это всегда сам скрипт.
если ваш скрипт хранится в
C:\example\script.bat
, потом%~dp0
значениеC:\example\
.ss64.com содержит дополнительную информацию о синтаксисе расширения параметров. Вот соответствующая выдержка:
вы можете получить значение любого параметра, используя%, за которым следует числовое положение в командной строке.
[...]
если параметр используется для указания имени файла, то может быть применен следующий расширенный синтаксис:
[...]
%~d1 разверните %1 только на букву диска-C:
[...]
%~p1 разверните %1 только на путь, например \utils\ это включает в себя трейлинг \ который может быть интерпретирован как escape-символ некоторыми командами.
[...]
модификаторы выше могут быть объединены:
%~dp1 разверните %1 только на букву диска и путь
[...]
вы можете получить путь к самому пакетному сценарию с %0, расширения параметров могут быть применены к этому, поэтому %~dp0 вернет диск и путь к пакетному сценарию, например W:\scripts\