Windows Batch files
Файлы с тем же путём, где расположен сам bat-файл
@echo off :: Path to this file itself set PP=%~dp0 :: Do something on file *doc.txt* which saved in the same folder do something %PP%doc.txt %*
Файлы с тем же именем, но другим расширением (или без него), что и сам bat-файл
Например, такой bat-файл подходит для запуска bash-скрипта с тем же именем, но без расширения:
@echo off set NM=%~n0 bash %NM% %*
Файлы с тем же путём и с тем же именем, что вызывающий bat-файл
@echo off set PP=%~dp0 set NM=%~n0 :: Run python script with same name as .bat file python %PP%%NM%.py %*
Пробел в конце переменной
Создать пустую переменную и через пробел подставить её в другую переменную.
set EMPTY= set NINJA_STATUS=[%%p %%f/%%t] %EMPTY% ninja %*
Выйти из файла если возникла ошибка в команде
command || echo ERROR && exit /b %errorlevel%
Функции
@echo off SETLOCAL CALL :MyFunction 55 , 1 EXIT /B %ERRORLEVEL% :MyFunction echo The value of parameter 1 is %~1 echo The value of parameter 2 is %~2 EXIT /B 0
Обработка параметров
Если запустить for /? в командной строке, то там будет,
в том числе, описание расширенной обработки параметров.
Частично эти сведения уже использованы в примерах выше.
Цитата:
Операции подстановки ссылок на переменные команды FOR также расширены. Допускается применение следующих синтаксических конструкций: %~I - из переменной %I удаляются обрамляющие кавычки (") %~fI - переменная %I расширяется до полного имени файла %~dI - из переменной %I выделяется только имя диска %~pI - из переменной %I выделяется только путь к файлу %~nI - из переменной %I выделяется только имя файла %~xI - из переменной %I выделяется расширение имени файла %~sI - полученный путь содержит только короткие имена %~aI - переменная %I расширяется до атрибутов файла %~tI - переменная %I расширяется до даты /времени файла %~zI - переменная %I расширяется до размера файла %~$ПУТЬ:I - проводится поиск по каталогам, заданным в переменной среды ПУТЬ, и переменная %I заменяется на полное имя первого найденного файла. Если переменная ПУТЬ не определена или в результате поиска не найден ни один файл, то этот модификатор заменяется на пустую строку. При объединении нескольких операторов можно получить следующие результаты: ~dpI - переменная I раскрывается в имя диска и путь ~nxI - переменная I раскрывается в имя файла и его расширение ~fsI - переменная I раскрывается в полный путь с короткими именами ~dp$ПУТЬ:I - проводится поиск по каталогам, заданным в переменной среды ПУТЬ, и переменная I раскрывается в имя диска и путь к первому найденному файлу. ~ftzaI - переменная I раскрывается в строку, подобную выдаваемой командой DIR В приведенных выше примерах переменные I и ПУТЬ можно заменить на другие допустимые значения. Синтаксическая конструкция с символами ~ заканчивается допустимым именем переменной цикла FOR. Для имен переменных рекомендуется использовать заглавные буквы, например, I, что делает эту конструкцию более удобной для чтения и предотвращает ошибочное принятие их за модификаторы, которые не различают регистр.
Полезные ссылки: https://dl.gsu.by/doc/use/ntcmds.htm, https://github.com/Lifailon/Batch-Commands