Команда для запуска файла .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.

Как это сделать в одной строке?

Ответ 2

"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 просматривает

  1. Каталог, из которого загружено приложение.

  2. Текущий каталог для родительского процесса.

  3. Windows NT/2000/XP: 32-разрядная системная директория Windows. Используйте функцию GetSystemDirectory, чтобы получить путь к этому каталогу. Имя этого каталога - System32.

  4. Windows NT/2000/XP: 16-разрядная системная директория Windows. Нет функции, которая получает путь к этому каталогу, но выполняется поиск. Имя этого каталога - System.

  5. Каталог Windows. Используйте функцию GetWindowsDirectory, чтобы получить путь к этому каталогу.

  6. Каталоги, перечисленные в переменной среды 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 Удаляет до конца строки

Ответ 3

Существует много возможностей для решения этой задачи.

1. RUN командный файл с полным путем

Самое легкое решение работает командный файл с полным путем.

"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, который является имя командного файла.

2. Вызов командного файла с полным путем

Другим решением является вызов командного файла с полным путем.

call "F:\- Big Packets -\kitterengine\Common\Template.bat"

Отличие от первого решения заключается в том, что после завершения пакетного файла Template.bat пакетная обработка продолжается в пакетном script, содержащем эту командную строку.

Для текущего каталога, прочитанного выше.

3. Изменить каталог и командный файл RUN с помощью одной командной строки

Есть 3 оператора для запуска нескольких команд в одной командной строке: &, && и ||.
Подробнее см. Ответ на Одиночная строка с несколькими командами с использованием пакетного файла Windows

Я предлагаю для этой задачи оператор &&.

cd /D "F:\- Big Packets -\kitterengine\Common" && Template.bat

Как и в первом решении, нет возврата к текущему script, если это файл *.bat или *.cmd, и изменение каталога и продолжение пакетной обработки на Template.bat выполняется успешно.

4. Изменить каталог и CALL пакетный файл с помощью одной командной строки

Эта командная строка изменяет каталог и при успешном вызывает командный файл.

cd /D "F:\- Big Packets -\kitterengine\Common" && call Template.bat

Отличие от третьего решения - возврат к текущему пакету script при выходе из обработки Template.bat.

5. Изменить каталог и CALL командный файл с сохранением текущей среды с помощью одной командной строки

Четыре вышеупомянутых решения изменяют текущий каталог, и неизвестно, что 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.

Ответ 4

Вот простой пример Run Bat file

Ответ 5

Вы можете использовать команду Cmd для запуска командного файла.

Вот мой путь =>

cmd /c ""Full_Path_Of_Batch_Here.cmd" "

Дополнительная информация => cmd/?