Я знаю, что %0
содержит полный путь пакетного сценария, напримерc:\path\to\my\file\abc.bat
Я бы path
равнялсяc:\path\to\my\file
Как я мог этого достичь?
windows
batch-file
Миша Морошко
источник
источник
Ответы:
%~dp0
будет каталог. Вот некоторая документация по всем модификаторам пути . Прикольные вещи :-)Чтобы удалить последний обратный слеш, вы можете использовать
:n,m
синтаксис подстроки, например:Я не верю, что есть способ объединить
%0
синтаксис с:~n,m
синтаксисом, к сожалению.источник
%~0\..
- знал, что должен быть лучший способ! Кроме того, вы, вероятно, захотите заключить%~dp0
в двойные кавычки (""
), если в имени каталога есть пробелы и т. Д.%~dp0
содержит `` в конце. У тебя есть идея как это убрать?SET msg=hello world
работает отлично). Однако, когда вы используете% mypath% в другом месте, вы должны быть осторожны, чтобы использовать его в кавычках, хотя они не нужныcd
ни для того, ни для другого.Вы можете использовать следующий скрипт, чтобы получить путь без "\"
источник
%~dp0
может быть относительный путь. Чтобы преобразовать его в полный путь, попробуйте что-то вроде этого:источник
%~dp0
напрямую?%~dp0
может быть относительным, который может или не может быть проблемой в зависимости от%~dp0
не может содержать относительный путь,d
обозначает диск иp
путь, как диск может быть относительным?%~dp0
это будет абсолютный путь, даже если скрипт был запущен как относительный путь. Благодаря комментарию Джеба этот ответ меня не обманул. Почему люди просто придумывают вещи и уходят и начинают распространять свое дикое воображение на других. У меня есть коллега, который делает это, но я обвинил его (молодой) возраст. Я бы хотел, чтобы мой отрицательный голос был засчитан.Вы можете использовать
%~dp0
, d означает только диск, p означает только путь, 0 - аргумент для полного имени файла командного файла.Например, если путь к файлу был C: \ Users \ Oliver \ Desktop \ example.bat, тогда аргумент будет равен C: \ Users \ Oliver \ Desktop \, также вы можете использовать команду
set cpath=%~dp0 && set cpath=%cpath:~0,-1%
и использовать%cpath%
переменную для удаления завершающего слеша.источник
%cd%
даст вам путь к каталогу, из которого выполняется скрипт.Просто беги:
источник
%CD%
текущая рабочая папка, а не папка, в которой хранится командный файл. Они могут быть в одном месте, но часто это не так.Это было бы
%CD%
переменной.%CD%
возвращает текущий каталог, в котором находится пакетный скрипт.источник
CD C:\Temp <CR> ECHO %CD%
(<CR>
это новая строка ...)Я работаю на компьютере с Windows 7, и в итоге я использовал строки ниже, чтобы получить абсолютный путь к папке для моего bash-скрипта.
Я попал к этому решению после просмотра http://www.linuxjournal.com/content/bash-parameter-expansion .
источник