Ответ 1
Можно найти здесь: https://ss64.com/nt/start.html
start "" /D F:\- Big Packets -\kitterengine\Common\ /W Template.bat
Я пытаюсь сделать мою сборку Visual Studio script выполнить файл .bat, который делает что-то важное.
Вот что я хочу сделать прямо сейчас:
cd "F:\- Big Packets -\kitterengine\Common\" Template.bat
Но это не сработает.
Я должен сделать это, чтобы он работал:
cd "F:\- Big Packets -\kitterengine\Common\"
F:
Template.bat
Но это довольно сложно добавить в Visual Studio script.
Как это сделать в одной строке?
Можно найти здесь: https://ss64.com/nt/start.html
start "" /D F:\- Big Packets -\kitterengine\Common\ /W Template.bat
"F:\- Big Packets -\kitterengine\Common\Template.bat"
возможно, предваряется call
(см. call/?
). Или Cd/d "F:\- Big Packets -\kitterengine\Common\" & Template.bat
.
CMAT Cheat Sheet
Cmd.exe
Получать помощь
пунктуация
Именование файлов
Запуск программ
Ключи
CMD.exe
Первое, что нужно запомнить, это способ работы с компьютером. Это было так, как мы это делали до того, как WIMP (Windows, Icons, Mouse, Popup menus) стали обычным явлением. Это обязано корням CPM, VMS и Unix. Он использовался для запуска программ, копирования и удаления файлов. Также вы можете изменить время и дату.
Для получения справки о запуске CMD типа cmd/?
, Вы должны запустить его с помощью переключателя /k
или /c
если вы просто не хотите вводить его.
Получать помощь
Для общей помощи. Введите " Help
в командной строке. Для каждой введенной команды введите help <command>
(например, help dir
) или <command>/?
(например, dir/?
).
Некоторые команды имеют вспомогательные команды. Например, schtasks/create/?
,
Помощь команды NET
необычна. Ввод net use/?
это краткая справка. Тип net help use
для полной помощи. То же самое относится и к корневой net/?
также краткая справка, используйте net help
.
Ссылки в Help для нового поведения описывают изменения от CMD в OS/2 и Windows NT4 до текущего CMD, который находится в Windows 2000 и более поздних версиях.
WMIC
- многоцелевая команда. Тип wmic/?
,
пунктуация
& seperates commands on a line.
&& executes this command only if previous command errorlevel is 0.
|| (not used above) executes this command only if previous command
errorlevel is NOT 0
> output to a file
>> append output to a file
< input from a file
2> Redirects command error output to the file specified. (0 is StdInput, 1 is StdOutput, and 2 is StdError)
2>&1 Redirects command error output to the same location as command output.
| output of one command into the input of another command
^ escapes any of the above, including itself, if needed to be passed
to a program
" parameters with spaces must be enclosed in quotes
+ used with copy to concatenate files. E.G. copy file1+file2 newfile
, used with copy to indicate missing parameters. This updates the files
modified date. E.G. copy /b file1,,
%variablename% a inbuilt or user set environmental variable
!variablename! a user set environmental variable expanded at execution
time, turned with SelLocal EnableDelayedExpansion command
%<number> (%1) the nth command line parameter passed to a batch file. %0
is the batchfile name.
%* (%*) the entire command line.
%CMDCMDLINE% - expands to the original command line that invoked the
Command Processor (from set /?).
%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop.
Single % sign at command prompt and double % sign in a batch file.
\\ (\\servername\sharename\folder\file.ext) access files and folders via UNC naming.
: (win.ini:streamname) accesses an alternative steam. Also separates drive from rest of path.
. (win.ini) the LAST dot in a file path separates the name from extension
. (dir .\*.txt) the current directory
.. (cd ..) the parent directory
\\?\ (\\?\c:\windows\win.ini) When a file path is prefixed with \\?\ filename checks are turned off.
Именование файлов
< > : " / \ | Reserved characters. May not be used in filenames.
Reserved names. These refer to devices eg,
copy filename con
which copies a file to the console window.
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4,
COM5, COM6, COM7, COM8, COM9, LPT1, LPT2,
LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9
CONIN$, CONOUT$, CONERR$
--------------------------------
Maximum path length 260 characters
Maximum path length (\\?\) 32,767 characters (approx - some rare characters use 2 characters of storage)
Maximum filename length 255 characters
Запуск программы
См. start/?
и call/?
для помощи по всем трем направлениям.
Существует два типа программ Windows: консоль или не консоль (они называются GUI, даже если они не имеют одного). Консольные программы присоединяются к текущей консоли или Windows создает новую консоль. Программы GUI должны явно создавать свои собственные окна.
Если полный путь не указан, то Windows просматривает
Каталог, из которого загружено приложение.
Текущий каталог для родительского процесса.
Windows NT/2000/XP: 32-разрядная системная директория Windows. Используйте функцию GetSystemDirectory, чтобы получить путь к этому каталогу. Имя этого каталога - System32.
Windows NT/2000/XP: 16-разрядная системная директория Windows. Нет функции, которая получает путь к этому каталогу, но выполняется поиск. Имя этого каталога - System.
Каталог Windows. Используйте функцию GetWindowsDirectory, чтобы получить путь к этому каталогу.
Каталоги, перечисленные в переменной среды PATH.
Укажите имя программы
Это стандартный способ запуска программы.
c:\windows\notepad.exe
В пакетном файле пакет будет ждать выхода программы. При вводе командной строки не дожидаются выхода графических программ.
Если программа управляется пакетным файлом, а остальная часть вызывающего пакетного файла не выполняется.
Используйте команду "Пуск"
Start
запускает программы нестандартными способами.
start "" c:\windows\notepad.exe
Start
запускает программу и не ждет. Консольные программы запускаются в новом окне. Использование /b
переключает консольные программы в одно и то же окно, что отрицает основную цель Start.
Start использует графическую оболочку Windows - то же самое, что и ввод в WinKey + R (диалог запуска). Пытаться
start shell:cache
Также можно ввести имена программ, зарегистрированные в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
без указания полного пути.
Также обратите внимание, что первый набор кавычек, если таковой имеется, ДОЛЖЕН быть заголовком окна.
Использовать команду вызова
Вызов используется для запуска пакетных файлов и ожидания их выхода и продолжения текущего командного файла.
Другие имена файлов
Ввод имени не-программного файла совпадает с двойным щелчком по файлу.
Ключи
Ctrl + C выходит из программы, не выходя из окна консоли.
Для других клавиш редактирования введите Doskey/?
,
Команды вызова ↑ и ↓
ESC очищает командную строку
F7 отображает историю команд
ALT + F7 очищает историю команд
F8 ищет историю команд
F9 выбирает команду по номеру
ALT + F10 очищает макроопределения
Также не указаны
Ctrl + ← или → Перемещает слово за раз
Ctrl + Backspace Удаляет предыдущее слово
Home Начало линии
End Конец строки
Ctrl + End Удаляет до конца строки
Существует много возможностей для решения этой задачи.
Самое легкое решение работает командный файл с полным путем.
"F:\- Big Packets -\kitterengine\Common\Template.bat"
После достижения конечного командного файла Template.bat
возврат к предыдущему script в случае, если приведенная выше командная строка находится в файле *.bat или *.cmd.
Текущий каталог для пакетного файла Template.bat
- это текущий каталог текущего процесса. В случае Template.bat
требуется, чтобы каталог этого командного файла был текущим каталогом, командный файл Template.bat
должен содержать после @echo off
вторую строку следующую команду:
cd /D "%~dp0"
Запустите в окне командной строки cd /?
для получения справки этой команды, объясняющей параметр /D
... изменение в указанный каталог также на другом диске.
Запустите в окне командной строки call /?
для получения справки этой команды, используемой также в решениях 2., 4. и 5. и объясняя также %~dp0
... диск и путь аргумента 0, который является имя командного файла.
Другим решением является вызов командного файла с полным путем.
call "F:\- Big Packets -\kitterengine\Common\Template.bat"
Отличие от первого решения заключается в том, что после завершения пакетного файла Template.bat
пакетная обработка продолжается в пакетном script, содержащем эту командную строку.
Для текущего каталога, прочитанного выше.
Есть 3 оператора для запуска нескольких команд в одной командной строке: &
, &&
и ||
.
Подробнее см. Ответ на Одиночная строка с несколькими командами с использованием пакетного файла Windows
Я предлагаю для этой задачи оператор &&
.
cd /D "F:\- Big Packets -\kitterengine\Common" && Template.bat
Как и в первом решении, нет возврата к текущему script, если это файл *.bat или *.cmd, и изменение каталога и продолжение пакетной обработки на Template.bat
выполняется успешно.
Эта командная строка изменяет каталог и при успешном вызывает командный файл.
cd /D "F:\- Big Packets -\kitterengine\Common" && call Template.bat
Отличие от третьего решения - возврат к текущему пакету script при выходе из обработки Template.bat
.
Четыре вышеупомянутых решения изменяют текущий каталог, и неизвестно, что Template.bat
делает относительно
В случае, если важно, чтобы среда текущего *.bat или *.cmd script не была изменена никакими Template.bat
изменениями в среде для себя, рекомендуется использовать setlocal
и endlocal
.
Запустите в окне командной строки setlocal /?
и endlocal /?
для отображения справки этих двух команд. И прочитайте ответ на сменить команду каталога cd.. не работать в пакетном файле после установки npm, объясняя более подробно, что делают эти две команды.
setlocal & cd /D "F:\- Big Packets -\kitterengine\Common" & call Template.bat & endlocal
Теперь используется только &
вместо &&
, так как здесь важно, что после выполнения setlocal
выполняется команда endlocal
.
ОДНО БОЛЬШЕ ПРИМЕЧАНИЕ
Если командный файл Template.bat
содержит команду exit
без параметра /B
, и эта команда действительно выполнена, процесс команды всегда выходит из независимой иерархии вызовов. Поэтому убедитесь, что Template.bat
содержит exit /B
или goto :EOF
вместо просто exit
, если в этом пакетном файле используется exit
.
Вот простой пример Run Bat file
Вы можете использовать команду Cmd для запуска командного файла.
Вот мой путь =>
cmd /c ""Full_Path_Of_Batch_Here.cmd" "
Дополнительная информация => cmd/?