Я пытаюсь заставить свой сценарий сборки Visual Studio выполнять файл .bat, который выполняет что-то важное.
Вот что я хочу сделать прямо сейчас:
cd "F: - Big Packets - kitterengine Common " Template.bat
Но это не работает.
Я должен сделать это, чтобы он заработал:
cd "F: - Big Packets - kitterengine Common " F: Template .bat
Но это довольно сложно добавить в сценарий Visual Studio.
Как я могу сделать это одной строкой?
См. здесь: https://ss64.com/nt/start.html
start ""/DF: - Большие пакеты - kitterengine Common /W Template.bat
"F: - Big Packets - kitterengine Common Template.bat"
может начинаться с call
(см. call/?
). Или Cd/d "F: - Big Packets - kitterengine Common " & Template.bat
.
Памятка по CMD
-
Cmd.exe
-
Получение помощи
-
Пунктуация
-
Именование файлов
-
Запуск программ
-
Ключи
Первое, что нужно запомнить, это способ работы с компьютером. Так мы делали это до того, как WIMP (Windows, значки, мышь, всплывающие меню) стали обычным явлением. Он обязан своим корнями CPM, VMS и Unix. Он использовался для запуска программ, копирования и удаления файлов. Также вы можете изменить время и дату.
Для получения справки по запуску CMD введите cmd/?
. Вы должны начать его с переключателя /k
или /c
, если вы не хотите просто ввести его.
Получение помощи
Для общей помощи. Введите Help
в командной строке. Для каждой перечисленной команды введите help
(например, help dir
) или /?
(например, dir/?
).
Некоторые команды имеют подкоманды. Например, schtasks/create/?
.
Справка команды NET
необычна. Ввод net use/?
– это краткая справка. Для получения полной справки введите net help use
. То же самое относится и к корню – net/?
также является краткой справкой, используйте net help
.
Ссылки в справке для новое поведение описывает изменения от CMD в OS/2 и Windows NT4 до текущего CMD, который есть в Windows 2000 и более поздних версиях.
WMIC
– это многоцелевая команда. Введите wmic/?
.
& разделяет команды на строку. && выполняет эту команду, только если уровень ошибки предыдущей команды равен 0. || (не используется выше) выполняет эту команду только в том случае, если уровень ошибки предыдущей команды НЕ равен 0> вывод в файл >> добавить вывод в файл Перенаправляет вывод ошибки команды в указанный файл. (0 - StdInput, 1 - StdOutput, 2 - StdError) 2> & 1 Перенаправляет вывод ошибки команды в то же место, что и вывод команды. | вывод одной команды на вход другой команды ^ экранирует все вышеперечисленное, включая саму себя, если необходимо передать в программу параметры с пробелами должны быть заключены в кавычки + используются с копией для объединения файлов. EG copy file1 + file2 newfile , используется с копией для обозначения отсутствующих параметров. Это обновляет дату изменения файлов. Например, copy/b file1 ,,% variablename% a встроенная или заданная пользователем переменная среды! variablename! переменная среды, заданная пользователем, раскрывается во время выполнения, включается с помощью SelLocal EnableDelayedExpansion command% (% 1) n-й параметр командной строки, переданный в пакетный файл.% 0 - это имя пакетного файла.% * (% *) вся командная строка.% CMDCMDLINE% - расширяется до исходной командной строки, которая вызвала theCommand Processor (из набора/?) .% или %% (% A или %% A) переменная в цикле for. Одиночный знак% в командной строке и двойной знак% в пакетном файле . \ (\ servername sharename folder file.ext) доступ к файлам и папкам через именование UNC .: (w in.ini: streamname) обращается к альтернативному Steam. Также отделяет диск от остальной части пути. (Win.ini) ПОСЛЕДНЯЯ точка в пути к файлу отделяет имя от расширения. (dir. *. txt) текущий каталог .. (cd ..) родительский каталог \? (\? c: windows win.ini) Когда путь к файлу имеет префикс \? проверка имен файлов отключена.
Именование файлов
: "/ | Зарезервированные символы. Не могут использовать в именах файлов. Зарезервированные имена. Они относятся к устройствам, например, copy filename con, который копирует файл в окно консоли. CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9CONIN $, CONOUT $, CONERR $ ----------------------- --------- Максимальная длина пути 260 символов Максимальная длина пути (\? ) 32 767 символов (приблизительно - некоторые редкие символы используют 2 символа памяти) Максимальная длина имени файла 255 символов
Запуск программы
См. start/?
и вызов /?
для справки по всем трем способам.
Есть два типа программ Windows – консольные и неконсольные (они называются графическими интерфейсами, даже если у них его нет). программы присоединяются к текущей консоли, или Windows создает новую консоль. Программы с графическим интерфейсом должны явно создавать свои собственные окна.
Если полный путь не указан, 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 Начало строки
-
Конец Конец строки
-
Ctrl + End Удаляет до конца строки
-
1Хотя это полезная информация, большая ее часть не имеет отношения к вопросу. Оператор не спрашивал, как использовать командную строку или как использовать компьютер или пакет в целом, что является причиной, по которой я проголосовал против: нерелевантность. – JustAFellowCoder 20 ноя, в 22:05
"F: - Большие пакеты - kitterengine Common Template.bat"
может быть добавлен в начале с call
(см. call/?
). Или Cd/d "F: - Big Packets - kitterengine Common " & Template.bat
.
Памятка по CMD
-
Cmd.exe
-
Получение помощи
-
Пунктуация
-
Именование файлов
-
Запуск программ
-
Ключи
Первое, что нужно запомнить, это способ работы с компьютером. Так мы делали это до того, как WIMP (Windows, значки, мышь, всплывающие меню) стали обычным явлением. Он обязан своим корнями CPM, VMS и Unix. Он использовался для запуска программ, копирования и удаления файлов. Также вы можете изменить время и дату.
Для получения справки по запуску CMD введите cmd/?
. Вы должны начать его с переключателя /k
или /c
, если вы не хотите просто ввести его.
Получение помощи
Для общей помощи. Введите Help
в командной строке.. Для каждой перечисленной команды введите help
(например, help dir
) или /?
(например, dir/?
).
Некоторые команды имеют подкоманды. Например, schtasks/create/?
.
Справка команды NET
необычна. Ввод net use/?
– это краткая справка. Для получения полной справки введите net help use
. То же самое относится и к корню – net/?
также является краткой справкой, используйте net help
.
Ссылки в справке для новое поведение описывает изменения от CMD в OS/2 и Windows NT4 до текущего CMD, который есть в Windows 2000 и более поздних версиях.
WMIC
– это многоцелевая команда. Введите wmic/?
.
& разделяет команды в строке. && выполняет эту команду, только если уровень ошибки предыдущей команды равен 0. || (не используется выше) выполняет эту команду только в том случае, если уровень ошибки предыдущей команды НЕ равен 0> вывод в файл >> добавить вывод в файл Перенаправляет вывод ошибки команды в указанный файл. (0 - StdInput, 1 - StdOutput, 2 - StdError) 2> & 1 Перенаправляет вывод ошибки команды в то же место, что и вывод команды. | вывод одной команды на вход другой команды ^ экранирует все вышеперечисленное, включая саму себя, если необходимо передать в программу параметры с пробелами должны быть заключены в кавычки + используются с копией для объединения файлов. EG copy file1 + file2 newfile , используется с копией для обозначения отсутствующих параметров. Это обновляет дату изменения файлов. Например, copy/b file1 ,,% variablename% a встроенная или заданная пользователем переменная среды! variablename! переменная среды, заданная пользователем, раскрывается во время выполнения, включается с помощью SelLocal EnableDelayedExpansion command% (% 1) n-й параметр командной строки, переданный в пакетный файл.% 0 - это имя пакетного файла.% * (% *) вся командная строка.% CMDCMDLINE% - расширяется до исходной командной строки, которая вызвала theCommand Processor (из набора/?) .% или %% (% A или %% A) переменная в цикле for. Одиночный знак% в командной строке и двойной знак% в пакетном файле . \ (\ servername sharename folder file.ext) доступ к файлам и папкам через именование UNC .: (w in.ini: streamname) обращается к альтернативному Steam. Также отделяет диск от остальной части пути. (Win.ini) ПОСЛЕДНЯЯ точка в пути к файлу отделяет имя от расширения. (dir. *. txt) текущий каталог .. (cd ..) родительский каталог \? (\? c: windows win.ini) Когда путь к файлу имеет префикс \? проверка имен файлов отключена.
Именование файлов
: "/ | Зарезервированные символы. Не могут использоваться в именах файлов. Зарезервированные имена. Они относятся к устройствам, например, copy filename con, который копирует файл в окно консоли.. CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9 CONIN $, CONOUT $, CONERR $ -------------------------------- Максимальная длина пути 260 символов Максимальная длина пути (\? ) 32 767 символов (прибл. - некоторые редкие символы используют 2 символа хранения) Максимальная длина имени файла 255 символов
Запуск программы
См. start/?
и call/?
для получения справки по всем трем способам.
Есть два типа программ Windows – консольных или неконсольных (они называются графическими интерфейсами, даже если у них его нет). Консольные программы присоединяются к текущей консоли, или Windows создает новую консоль. Программы с графическим интерфейсом пользователя должны явно создавать свои собственные окна.
Если полный путь не указан, 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 Удаляет предыдущее слово
-
Главная Начало строки
-
Конец Конец строка
-
Ctrl + End Удаляет до конца строки
Есть много возможностей для решения этой задачи.
- 1. ЗАПУСТИТЬ пакетный файл с полным путем
- 2. ВЫЗЫВАТЬ пакетный файл с полным путем
- 3. Смена каталога и запуск командного файла с помощью одной командной строки
- 4. Измените каталог и командный файл CALL с помощью одной командной строки
- 5. Измените каталог и командный файл CALL с сохранением текущей среды с помощью одной командной строки
- 1. ЗАПУСТИТЬ пакетный файл с полным путем
- 2. ВЫЗЫВАТЬ пакетный файл с полным путем
- 3. Измените каталог и запустите командный файл с помощью одной командной строки
- 4. Измените каталог и командный файл CALL с помощью одной командной строки
- 5. Измените каталог и командный файл CALL с сохранением текущей среды с помощью одной командной строки
- Как запустить командный файл, не открывая «командное окно»? [дубликат]
1. ЗАПУСТИТЬ пакетный файл с полным путем
Самым простым решением является запустить пакетный файл с полным путем.
"F: - Большие пакеты - kitterengine Common Template.bat"
После достижения конца пакетного файла Template.bat
, нет возврата к предыдущему сценарию в случае, если указанная выше командная строка находится в файле * .bat или * .cmd.
Текущий каталог для пакетного файла Template. bat
– текущий каталог текущего процесса. В случае, если Template.bat
требует, чтобы каталог этого пакетного файла был текущим каталогом, пакетный файл Template.bat
должен содержать после @echo off
в качестве второй строки следующей командной строки:
cd/D "% ~ dp0"
Запустить в окне командной строки cd/?
для отображения справки по этой команде, объясняющей параметр /D
… перейти в указанный каталог также на другой диск.
Запустить в окне командной строки call/?
для отображения справки по этой команде, которая также используется в решениях 2., 4. и 5. и объясняя также диск % ~ dp0
… и путь аргумента 0, который является именем командного файла.
2. ВЫЗЫВАТЬ пакетный файл с полным путем
Другое решение – вызвать пакетный файл с полным путем.
вызовите "F: - Big Packets - kitterengine Common Template.bat"
Отличие от первого решения в том, что после завершения пакетного файла Template. bat
, пакетная обработка продолжается в пакетном сценарии, содержащем эту командную строку.
Для текущего каталога, см. выше.
3. Смена каталога и запуск командного файла с помощью одной командной строки
Для выполнения нескольких команд в одной командной строке есть 3 оператора: &
, &&
и ||
.
Подробнее см. ответ в разделе «Одна строка с несколькими командами с использованием пакетного файла Windows»
Я предлагаю для этой задачи Оператор &&
cd/D "F: - Big Packets - kitterengine Common" && Template.bat
Как и в первом решении, нет возврата к текущему скрипту, если это файл * .bat или * .cmd и изменение каталога и продолжение пакетной обработки в Template.bat
успешно.
4. Измените каталог и командный файл CALL с помощью одной командной строки
Эта командная строка изменяет каталог и в случае успеха вызывает командный файл.
cd/D "F: - Big Packets - kitterengine Common" && call Template.bat
Отличие от третьего решения – возврат к текущему пакетный скрипт при выходе из обработки Template.bat
.
5. Измените каталог и командный файл CALL с сохранением текущей среды с помощью одной командной строки
Четыре решения выше изменяют текущий каталог, и неизвестно, что делает Template.bat
в отношении
- текущий каталог
- переменные среды
- состояние расширений команд
- отложенное расширение state
В случае, если важно, чтобы среда текущего сценария * .bat или * .cmd не изменялась какими-либо изменениями Template.bat
в среде для себя, рекомендуется использовать setlocal
и endlocal
.
Запускать в окне командной строки setlocal/?
и endlocal/?
для отображения справки этих двух команд. И прочтите ответ на команду смены каталога cd .. не работает в пакетном файле после установки npm, более подробно объясняя, что делают эти две команды.
setlocal & cd/D "F: - Большие пакеты - kitterengine Common "& call Template.bat & endlocal
Теперь есть только &
вместо &&
, поскольку здесь важно, чтобы после выполнения setlocal
команда endlocal
, наконец, также выполнялась.
ЕЩЕ ОДНО ПРИМЕЧАНИЕ
Если командный файл Template.bat
содержит команду exit
без параметра /B
, и эта команда действительно выполняется, процесс команды всегда завершается независимо от иерархии вызовов. Поэтому убедитесь, что Template. bat
содержит exit/B
или goto: EOF
вместо просто exit
, если есть exit
используется вообще в этом пакетном файле.

Есть много возможностей решить эту задачу.
1. ЗАПУСТИТЬ пакетный файл с полным путем
Самым простым решением является запустить пакетный файл с полным путем.
"F: - Большие пакеты - kitterengine Common Template.bat"
После достижения конца пакетного файла Template.bat
, нет возврата к предыдущему сценарию в случае, если указанная выше командная строка находится в файле * .bat или * .cmd.
Текущий каталог для пакетного файла Template. bat
– текущий каталог текущего процесса. В случае, если Template.bat
требует, чтобы каталог этого пакетного файла был текущим каталогом, пакетный файл Template.bat
должен содержать после @echo off
в качестве второй строки следующей командной строки:
cd/D "% ~ dp0"
Запустить в окне командной строки cd/?
для отображения справки по этой команде, объясняющей параметр /D
… перейти в указанный каталог также на другой диск.
Запустить в окне командной строки call/?
для отображения справки по этой команде, которая также используется в решениях 2., 4. и 5. и объясняя также диск % ~ dp0
… и путь аргумента 0, который является именем командного файла.
2. ВЫЗЫВАТЬ пакетный файл с полным путем
Другое решение – вызвать пакетный файл с полным путем.
вызовите "F: - Big Packets - kitterengine Common Template.bat"
Отличие от первого решения состоит в том, что после завершения пакетного файла шаблон . bat
, пакетная обработка продолжается в пакетном сценарии, содержащем эту командную строку.
Для текущего каталога читать выше.
3. Измените каталог и запустите командный файл с помощью одной командной строки
Для запуска нескольких команд в одной командной строке есть 3 оператора: &
, &&
и ||
.
Подробнее см. ответ в разделе «Одна строка с несколькими командами с использованием пакетного файла Windows»
Я предлагаю для этой задачи Оператор &&
.
cd/D "F: - Big Packets - kitterengine Common" && Template. bat
Как и в первом решении, нет возврата к текущему сценарию, если это файл * .bat или * .cmd, и изменение каталога и продолжение пакетной обработки на Template.bat
выполнен успешно.
4. Измените каталог и командный файл CALL с помощью одной командной строки
Эта командная строка изменяет каталог и в случае успеха вызывает командный файл.
cd/D "F: - Big Packets - kitterengine Common" && call Template.bat
Отличие от третьего решения – возврат к текущему пакетный скрипт при выходе из обработки Template.bat
.
5. Измените каталог и командный файл CALL с сохранением текущей среды с помощью одной командной строки
Четыре решения выше изменяют текущий каталог, и неизвестно, что делает Template.bat
в отношении
- текущий каталог
- переменные среды
- состояние расширений команд
- отложенное расширение state
В случае, если важно, чтобы среда текущего сценария * .bat или * .cmd не изменялась какими-либо изменениями Template.bat
в среде для себя, рекомендуется использовать setlocal
и endlocal
.
Запускать в окне командной строки setlocal/?
и endlocal/?
для отображения справки этих двух команд. И прочтите ответ на команду смены каталога cd .. не работает в пакетном файле после установки npm, более подробно объясняя, что делают эти две команды.
setlocal & cd/D "F: - Большие пакеты - kitterengine Common "& call Template.bat & endlocal
Теперь есть только &
вместо &&
, поскольку здесь важно, чтобы после выполнения setlocal
команда endlocal
, наконец, также выполнялась.
ЕЩЕ ОДНО ПРИМЕЧАНИЕ
Если командный файл Template.bat
содержит команду exit
без параметра /B
, и эта команда действительно выполняется, процесс команды всегда завершается независимо от иерархии вызовов. Поэтому убедитесь, что Template.bat
содержит exit/B
или goto: EOF
, а не просто exit
, если в этом пакетном файле вообще используется exit
.
Вы можете использовать команду Cmd для запуска пакетного файла.
Вот мой путь =>
cmd/c "" Full_Path_Of_Batch_Here. cmd ""
Дополнительная информация => cmd/?
-
Спасибо за это! Я могу узнать, что это за ошибка из командной строки, потому что я бы не знал этого, если бы просто дважды щелкнул, чтобы запустить командный файл 🙂 – Cayenne Teoh 25 нояб.2020 в 9:17
Вы можете использовать команду Cmd для запуска пакетного файла.
Вот мой путь =>
cmd/c "" Full_Path_Of_Batch_Here.cmd ""
Дополнительная информация => cmd/?
Как запустить командный файл, не открывая «командное окно»? [дубликат]
Могу ли я запустить пакетный файл (.bat или .cmd) в Windows XP с помощью ярлыка без «черного окна»?
Сохраните следующее как wscript для например, hidecmd.vbs после замены “testing.bat” на имя вашего командного файла.
Установите oShell = CreateObject ("Wscript.Shell") Dim strArgsstrArgs = "cmd/c testing.bat "oShell.Run strArgs, 0, false
Второй параметр oShell.Run
– intWindowStyle
значение, указывающее внешний вид окна программы, а нулевое значение – для скрытого окна.
Ссылка находится здесь http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx

-
Будет ли третья строка такой: strArgs = “cmd/c FILEPATH testing.bat”? – Дэн Зи 07 нояб., В 3:46
-
1Есть ли способ запустить летучую мышь в повышенном режиме, оставаясь невидимым? – Лоренс Сварт, 9 мая 2017 г., 22:30
-
Как запустить
. bat
как администратор, используя этот метод? – Мехди Дехгани, 27 июля ’18, в 17:14 -
Это единственное, что у меня сработало. Я хотел использовать этот сценарий, чтобы развернуть другое окно, но всякий раз, когда я следовал обычным инструкциям по скрытию окон задач, например, создавал ярлык с выбранным «свернутым», используя «скрытый» параметр и «независимо от того, выполнен ли вход в систему или нет» и т. Д. , У меня всегда либо все еще было окно, либо скрипт не работал, вероятно, потому, что он больше не запускался как правильный пользователь. – Фабиан Ролинг, 28 авг., 20 ’20 в 16:54
Сохраните следующий код как wscript, например, hidecmd.vbs после замены “testing.bat” на имя вашего командного файла.
Установить oShell = CreateObject ("Wscript.Shell") Dim strArgsstrArgs = "cmd/c testing.bat" oShell.Run strArgs, 0, false
Второй параметр oShell.Run
– это значение intWindowStyle
, указывающее внешний вид окна программы, а нулевое значение – для скрытого окна.
Ссылка находится здесь http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx
Это просто упрощение ответа Шаджи. Вы можете запустить свой пакетный сценарий через сценарий VBScript (.vbs) следующим образом:
'HideBat.vbsCreateObject ("Wscript.Shell"). Запустите "your_batch_file.bat", 0, True
При этом ваш командный файл будет выполнен без отображения командного окна.
-
Как запустить файл
.bat
от имени администратора с помощью этого метода? – Мехди Дехгани, 27 июля ’18, в 17:21 -
@MehdiDehghani properties> security> запустить от имени администратора. Если это работает только для exe или приложений, тогда да ладно. – Mister SirCode 24 июня ’19 в 9:32
Это просто упрощение ответа Шаджи. Вы можете запустить свой пакетный сценарий через сценарий VBScript (.vbs) следующим образом:
'HideBat.vbsCreateObject ("Wscript.Shell"). Запустите "your_batch_file. bat ", 0, True
Это запустит ваш командный файл без отображения командного окна.
Просто чтобы расширить ответы на «Использовать сценарии Windows» (которые я считаю лучшими, потому что они уже встроены), вот как сделайте это с помощью одного сценария-оболочки и передачи имени «настоящего» командного файла в качестве параметра. Дополнительные параметры будут переданы в командный файл.
Если WScript .Arguments.Count> = 1 Затем ReDim arr (WScript.Arguments.Count-1) Для i = 0 В WScript.Arguments.Count-1 Arg = WScript.Arguments (i) Если InStr (Arg, "")> 0 Тогда Arg = "" "" & Arg & "" "" arr (i) = Arg Next RunCmd = Join (arr) CreateObject ("Wscript.Shell"). Run RunCmd, 0, TrueEnd If
Так, например, сохраните указанный выше файл как NoShell.vbs
где-нибудь, затем вызовите:
NoShell.vbs c: foo my_batch_file.bat
Finall y, если вы хотите запустить это откуда-то, что не понимает файл .vbs (например, «Внешние инструменты» в Visual Studio), вам нужно вызвать C: Windows System32 wscript.exe
с файлом vbs в качестве первого параметра и вашим пакетным файлом в качестве второго.
-
6Для тех, кому не нравится идея и концепция создания новый файл vbs для каждого нового создаваемого файла bat, так как нужно использовать любой из двух верхних ответов, это идеальное решение. Вместо нескольких файлов vbs у вас будет несколько ярлыков. Для каждого нового файла bat создайте ярлык файла vbs, щелкните его правой кнопкой мыши, выберите свойства> вкладка Ярлыки и в поле Цель введите путь к файлу bat после пути, который уже существует, как показано выше или как это, если ярлык находится не в том же месте, что и файл vbs:
"C: My Files HideCmd.vbs" c: foo my_batch_file.bat
. – Роло, 10 сен 2014, 13:53 -
Если в пути к файлу bat есть пробел, как его можно вызвать с помощью ярлыка для файла vbs? Например:
«C: My Files HideCmd.vbs» c: my things my_batch_file.bat
. Независимо от того, что я пробую для пути – двойные кавычки вокруг всего,% 20 вместо пробела или их комбинация, ничего не работает. Я получаю сообщение об ошибке, в котором говорится, что файл не может быть найден или ничего не происходит. Это связано с ошибкой пользователя на моей стороне, ограничением Windows с полем Target для ярлыков или проблемой со скриптом vbs, в котором он не обрабатывает пути к файлам с пробелами должным образом? – Роло, 10 сен 2014, в 13:59 -
@Rolo Я обновил скрипт, так что если какой-либо из входящих параметров имеет пробелы, он будет заключать их в кавычки. Таким образом, вы захотите заключить путь к пакетному файлу в кавычки при его вызове, тогда он будет считаться одним аргументом и повторно переноситься перед вызовом. – Тобиас Дж, 12 янв. ’15 в 21:11
Просто чтобы расширить ответы на «Использовать сценарии Windows» (которые я считаю лучшими, поскольку они уже встроены), вот как это сделать с помощью одного сценария-оболочки и передачи имени «настоящего» командного файла в качестве параметра. Дополнительные параметры будут переданы в пакетный файл.
Если WScript.Arguments.Count> = 1, то ReDim arr (WScript.Arguments.Count-1) Для i = 0 В WScript.Arguments.Count-1 Arg = WScript.Arguments (i) Если InStr (Arg, "")> 0, то Arg = "" "" & Arg & "" "" arr (i) = Arg Next RunCmd = Join (arr) CreateObject ("Wscript.Shell"). Run RunCmd, 0, TrueEnd If
Так, например, сохраните указанный выше файл как NoShell.vbs
где-нибудь, затем вызовите:
NoShell.vbs c: foo my_batch_file.bat
Наконец, если вы хотите запустить это откуда-то, что не понимает файл .vbs (например, «Внешние инструменты» в Visual Studio), вам нужно вызвать C: Windows System32 wscript.exe
с файлом vbs в качестве первого параметра и вашим командным файлом в качестве второго.
Используйте начало с параметром ‘/B’. Например:
@echo offstart/B go.bat
-
26
start/b
просто запустит программу в консоли, выделенной в данный момент, вместо того, чтобы создавать новую. В любом случае вы получите новый, поскольку пакет должен запускаться с помощью cmd (который, в свою очередь [сюрприз], открывает консоль). – Джои, 11 мая 2010, 18:02 -
@Joey да, но это очень полезно для запуска командных файлов из других приложений через выполнение оболочки (например,
SYSTEM
в C/C ++). – Томаш Зато – Восстановите Монику 10 января 2016, 18:10 -
1@ TomášZato: в этом случае вы можете просто вызвать командный файл напрямую, или, если все, что вы используете для запуска процесса, сначала не создает оболочку, используйте
cmd /c foo.cmd
. В этих сценариях нет абсолютно никакой необходимости использоватьstart
, и я бы сказал, чтоsystem
не следует использовать в пользуCreateProcess.
. Запуская командный файл, вы уже зависите от одной платформы, вы также можете использовать лучшие инструменты для работы. – Джои, 10 янв., 10:57 -
@Joey Большое спасибо, никогда раньше не слышал о
cmd/c
. Команда cmd – это то, что мне нужно в моем случае, но все ответы stackexchange, которые я нашел до сих пор, о пакетном файле, запускающем другой пакетный файл, имеют основные ответы для использования start … – T_D 5 мая 2017, 14:58 -
начало /b go.bat
не выделяет новую консоль (то есть экземпляр conhost.exe – или поток в csrss.exe до Windows 7). Однако это приведет к беспорядку, поскольку пакетный сценарий запускается с новым экземпляром cmd.exe, подключенным к той же консоли . Оба экземпляра оболочки будут конкурировать за чтение ввода с консоли, обычно попеременно. Ему требуется/w
(например,start/b/w go.bat
), чтобы ожидать второго экземпляра, что аналогично использованиюcmd/c
при использованииsystem
. Кроме того, если вы вызываетеCreateProcess
, запуститеgo.bat
напрямую.cmd/c
не требуется. – Эрик Вс 17 июл. ’17 в 16:05
Используйте начало с параметром ‘/B’. Например:
@echo offstart/B go.bat
Вы можете изменить свойства ярлыка для запуска в свернутом виде.
Чтобы запустить его полностью незаметно, вы ‘ понадобится что-то еще, например Windows Scripting.
-
1Ваше первое предложение – это то, как я всегда это делал. – Мартино 19 марта ’12 в 23:32
Вы можете изменить свойства ярлыка для запуска в свернутом виде.
Чтобы запустить его полностью незаметно, вы ‘ мне понадобится что-то еще, например сценарии Windows.
Простое решение, без использования каких-либо дополнительных программ.
- Создайте пакетный файл, который вы хотите выполнить, и протестируйте его.
- Создайте ярлык для это.
- Измените свойства ярлыка: на вкладке “Ярлык” выберите “Выполнить в свернутом виде”. Назначьте ему горячую клавишу, и все готово!
Удачи!
-
9Это не решение проблемы OP. Есть разница между Минимизация и Скрытие – nixda 27 окт. 2014 в 9:10
-
Если вы измените ярлык на использование правого значка, минимизированная заставка на панели задач будет фактически приятное напоминание, что что-то начинается. – Whoever 24 янв. ’15 в 18:55
-
Это хорошее и чистое решение моей проблемы! Спасибо! – dmitry_romanov 17 июн. ’18 в 04:37
-
сворачивание … хе-хе. – gumuruh 17 авг., ’18 в 16: 06
Простое решение, без использования дополнительных программ.
- Создайте командный файл, который вы хотите выполнить и протестировать его.
- Создайте для него ярлык.
- Отредактируйте свойства ярлыка: на вкладке ярлыка выберите “Выполнить свернутый”. Назначьте ему горячую клавишу, и все готово!
Удачи!
Бесплатная GPL с открытым исходным кодом «Создание скрытого процесса»
http://www.commandline.co.uk /chp/
Microsoft Security Essentials и, вероятно, большинство других сканеров вирусов и вредоносных программ будут рассматривать исполняемый файл chp.exe как вирус, поскольку он скрывает указанную вами программу от отображения окна или задачи. панель, как и вирусы.
Это не вирус. Он не скрывает, например, появление целевого процесса в диспетчере задач. И, конечно же, исходный код включен, поэтому вы можете видеть, что он очень маленький и ничего не делает, кроме запуска любой программы, которую вы ему даете.
Вам даже не нужно верить, что включенный chp.exe действительно был построен из этого источника. Вы можете отказаться от включенного chp.exe и скомпилировать свой собственный из источника, и все необходимые инструменты для этого даже бесплатны и загружаются.
Вы также можете просто создайте ярлык для файла .bat или .cmd, затем щелкните ярлык правой кнопкой мыши, выберите «Свойства», вкладку «Ярлык», «Выполнить: свернуто». Затем в запланированных задачах используйте ярлык вместо файла .bat/.cmd напрямую. Это предотвратит появление окна, но кнопка на панели задач все равно будет отображаться.
Бесплатная GPL с открытым исходным кодом «Создание скрытого процесса»
http://www.commandline.co. uk/chp/
Microsoft Security Essentials и, вероятно, большинство других сканеров вирусов и вредоносных программ будут рассматривать исполняемый файл chp.exe как вирус, поскольку он скрывает указанную вами программу от отображения окна или Кнопка панели задач, как и вирусы.
Это не вирус. Он не скрывает, например, появление целевого процесса в диспетчере задач. И, конечно же, исходный код включен, поэтому вы можете видеть, что он очень маленький и ничего не делает, кроме запуска любой программы, которую вы ему даете.
Вам даже не нужно верить, что включенный chp.exe действительно был построен из этого источника. Вы можете отказаться от включенного chp.exe и скомпилировать свой собственный из источника, и все необходимые инструменты для этого даже бесплатны и загружаются.
Вы также можете просто создайте ярлык для файла .bat или .cmd, затем щелкните ярлык правой кнопкой мыши, выберите «Свойства», вкладку «Ярлык», «Выполнить: свернуто». Затем в запланированных задачах используйте ярлык вместо файла .bat/.cmd напрямую. Это предотвратит появление окна, но кнопка на панели задач все равно будет отображаться.
Вы можете использовать оконные сценарии, такие как AutoIt.
В качестве примера просто напишите это в редактор сценариев AutoIt. Это довольно просто
Run ("C: test batchfile.bat", "", @SW_HIDE)
If вы хотите запустить его в цикле,
$ x = 0Do Run ("C: test batchfile.bat", "", @SW_HIDE) Sleep (5000) Пока $ x = 1
Скомпилируйте его как .exe – и все готово.
Аналогичным образом в AutoHotkey:
#NoTrayIcon; Чтобы предотвратить мгновенное всплывающее окно значка, запустите файл what.bat arg1 arg2,, скрыть
Вы можете использовать оконные сценарии, такие как AutoIt.
В качестве примера просто напишите это в AutoIt редактор сценария. Это довольно просто
Run ("C: test batchfile.bat", "", @SW_HIDE)
If вы хотите запустить его в цикле,
$ x = 0Do Run ("C: test batchfile.bat", "", @SW_HIDE) Sleep (5000) Пока $ x = 1
Скомпилируйте его как .exe – и все готово.
Аналогичным образом в AutoHotkey:
#NoTrayIcon; Чтобы предотвратить мгновенное всплывающее окно значка, запустите файл any.bat arg1 arg2,, скрыть
Использовать скрытый запуск (стоит 20 долларов)
Скрытый запуск – запускать приложения и пакетные файлы без окна консоли или запроса UAC
Консольные приложения и командные файлы регулярно запускаются при запуске Windows или по расписанию. Основное неудобство этого заключается в том, что каждое приложение открывает окно консоли, которое мерцает на экране. Hidden Start (или Hstart) – это облегченная утилита командной строки, которая позволяет запускать консольные приложения и командные файлы без каких-либо окон в фоновом режиме, обрабатывать повышение привилегий UAC в Windows 7 и Vista, запускать несколько команд параллельно или синхронно и многое другое. .
![]()
-
Это очень красиво разработанное и полезное приложение. – Гуру Джош 18 мая ’17 в 3: 40
Использовать скрытый запуск (стоит 20 долларов)
Скрытый запуск – запускать приложения и пакетные файлы без окна консоли или запроса UAC
Консольные приложения и командные файлы регулярно запускаются при запуске Windows или по расписанию. Основное неудобство этого заключается в том, что каждое приложение открывает консоль. то, что мерцает на экране. Hidden Start (или Hstart) – это облегченная утилита командной строки, которая позволяет запускать консольные приложения и командные файлы без каких-либо окон в фоновом режиме, обрабатывать повышение привилегий UAC в Windows 7 и Vista, запускать несколько команд параллельно или синхронно и многое другое. .
![]()