Команда для запуска .bat файла

Я пытаюсь заставить свой сценарий сборки 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  

30

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

  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 Начало строки

  • Конец Конец строки

  • Ctrl + End Удаляет до конца строки

отредактировал 02 декабря ’18 в 17:58
временное_имя_пользователя
29,7k3939 золота 117117 серебряных знаков181181 бронзовых знаков
ответ дан
# div>
  • 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 просматривает

  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 Удаляет предыдущее слово

  • Главная Начало строки

  • Конец Конец строка

  • Ctrl + End Удаляет до конца строки


5

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

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 в отношении

  1. текущий каталог
  2. переменные среды
  3. состояние расширений команд
  4. отложенное расширение 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 используется вообще в этом пакетном файле.

отредактировано 23 мая ’17 в 10:30
Сообщество ♦
111 серебряных значков
ответил 08 дек. ’16 в 12:29
добавить комментарий |

Есть много возможностей решить эту задачу.

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 в отношении

  1. текущий каталог
  2. переменные среды
  3. состояние расширений команд
  4. отложенное расширение 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 .


3

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

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

  cmd/c "" Full_Path_Of_Batch_Here. cmd ""  

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

отредактировано 8 апреля ’20 в 13:19
ответил 28 июня ’19 в 12:28
  • Спасибо за это! Я могу узнать, что это за ошибка из командной строки, потому что я бы не знал этого, если бы просто дважды щелкнул, чтобы запустить командный файл 🙂 — Cayenne Teoh 25 нояб.2020 в 9:17
добавить комментарий |

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

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

  cmd/c "" Full_Path_Of_Batch_Here.cmd ""  

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



Как запустить командный файл, не открывая «командное окно»? [дубликат]

Могу ли я запустить пакетный файл (.bat или .cmd) в Windows XP с помощью ярлыка без «черного окна»?


100

Сохраните следующее как 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

Улучшите этот ответ
отредактировано 16 дек. 1:10
ответил 11 мая ’10 в 19:55
  • Будет ли третья строка такой: 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


49

Это просто упрощение ответа Шаджи. Вы можете запустить свой пакетный сценарий через сценарий VBScript (.vbs) следующим образом:

  'HideBat.vbsCreateObject ("Wscript.Shell"). Запустите "your_batch_file.bat",  0, True  

При этом ваш командный файл будет выполнен без отображения командного окна.

Улучшите этот ответ
отредактировано 14 мая ’14 в 9:36
Peter Mortensen
11.3k2222 золотых знака6464 серебряных знака8686 бронзовых знаков
ответил 15 февраля ’12 в 9:52
  • Как запустить файл .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  

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


24

Просто чтобы расширить ответы на «Использовать сценарии 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 в качестве первого параметра и вашим пакетным файлом в качестве второго.

Улучшите этот ответ
отредактировано 12 января 2015, 21:10
ответ дан 10 января 2014 в 17:50
  • 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 в качестве первого параметра и вашим командным файлом в качестве второго.


13

Используйте начало с параметром ‘/B’. Например:

  @echo offstart/B go.bat  

Улучшите этот ответ
отредактировано 14 мая ’14 в 9:34
Peter Mortensen
11.3k2222 золотых знака6464 серебряных знака8686 бронзовых знаков
ответил 11 мая ’10 в 17:36
  • 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  

10

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

Чтобы запустить его полностью незаметно, вы ‘ понадобится что-то еще, например Windows Scripting.

Улучшите этот ответ
отредактировано 19 июня ’19 в 16:21
ответил 11 мая ’10 в 19:50
  • 1
    Ваше первое предложение — это то, как я всегда это делал. — Мартино 19 марта ’12 в 23:32
добавить комментарий |

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

Чтобы запустить его полностью незаметно, вы ‘ мне понадобится что-то еще, например сценарии Windows.


8

Простое решение, без использования каких-либо дополнительных программ.

  1. Создайте пакетный файл, который вы хотите выполнить, и протестируйте его.
  2. Создайте ярлык для это.
  3. Измените свойства ярлыка: на вкладке «Ярлык» выберите «Выполнить в свернутом виде». Назначьте ему горячую клавишу, и все готово!

Удачи!

Улучшите этот ответ
отредактировано 17 апреля ’19 в 18:53
Pull Nointer
1333 бронзовых знака
27 окт. в 8:23
  • 9
    Это не решение проблемы OP. Есть разница между Минимизация и Скрытие — nixda 27 окт. 2014 в 9:10
  • Если вы измените ярлык на использование правого значка, минимизированная заставка на панели задач будет фактически приятное напоминание, что что-то начинается. — Whoever 24 янв. ’15 в 18:55
  • Это хорошее и чистое решение моей проблемы! Спасибо! — dmitry_romanov 17 июн. ’18 в 04:37
  • сворачивание … хе-хе. — gumuruh 17 авг., ’18 в 16: 06
добавить комментарий |

Простое решение, без использования дополнительных программ.

  1. Создайте командный файл, который вы хотите выполнить и протестировать его.
  2. Создайте для него ярлык.
  3. Отредактируйте свойства ярлыка: на вкладке ярлыка выберите «Выполнить свернутый». Назначьте ему горячую клавишу, и все готово!

Удачи!


7

Бесплатная GPL с открытым исходным кодом «Создание скрытого процесса»

http://www.commandline.co.uk /chp/

Microsoft Security Essentials и, вероятно, большинство других сканеров вирусов и вредоносных программ будут рассматривать исполняемый файл chp.exe как вирус, поскольку он скрывает указанную вами программу от отображения окна или задачи. панель, как и вирусы.

Это не вирус. Он не скрывает, например, появление целевого процесса в диспетчере задач. И, конечно же, исходный код включен, поэтому вы можете видеть, что он очень маленький и ничего не делает, кроме запуска любой программы, которую вы ему даете.

Вам даже не нужно верить, что включенный chp.exe действительно был построен из этого источника. Вы можете отказаться от включенного chp.exe и скомпилировать свой собственный из источника, и все необходимые инструменты для этого даже бесплатны и загружаются.


Вы также можете просто создайте ярлык для файла .bat или .cmd, затем щелкните ярлык правой кнопкой мыши, выберите «Свойства», вкладку «Ярлык», «Выполнить: свернуто». Затем в запланированных задачах используйте ярлык вместо файла .bat/.cmd напрямую. Это предотвратит появление окна, но кнопка на панели задач все равно будет отображаться.

Улучшите этот ответ
отредактировано 22 октября 2012 г. в 21:59
ответил 22 окт. 2012 в 21:17
добавить комментарий |

Бесплатная GPL с открытым исходным кодом «Создание скрытого процесса»

http://www.commandline.co. uk/chp/

Microsoft Security Essentials и, вероятно, большинство других сканеров вирусов и вредоносных программ будут рассматривать исполняемый файл chp.exe как вирус, поскольку он скрывает указанную вами программу от отображения окна или Кнопка панели задач, как и вирусы.

Это не вирус. Он не скрывает, например, появление целевого процесса в диспетчере задач. И, конечно же, исходный код включен, поэтому вы можете видеть, что он очень маленький и ничего не делает, кроме запуска любой программы, которую вы ему даете.

Вам даже не нужно верить, что включенный chp.exe действительно был построен из этого источника. Вы можете отказаться от включенного chp.exe и скомпилировать свой собственный из источника, и все необходимые инструменты для этого даже бесплатны и загружаются.


Вы также можете просто создайте ярлык для файла .bat или .cmd, затем щелкните ярлык правой кнопкой мыши, выберите «Свойства», вкладку «Ярлык», «Выполнить: свернуто». Затем в запланированных задачах используйте ярлык вместо файла .bat/.cmd напрямую. Это предотвратит появление окна, но кнопка на панели задач все равно будет отображаться.


7

Вы можете использовать оконные сценарии, такие как 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,, скрыть  

Улучшите этот ответ
отредактировано 16 апреля ’17 в 14:00
endolith
7,0072121 золотых знаков7676 серебряных знаков111111 бронзовых знаков
ответ дан 29 мая ’13 в 3:48
добавить комментарий |

Вы можете использовать оконные сценарии, такие как 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,, скрыть  

6

Использовать скрытый запуск (стоит 20 долларов)

Скрытый запуск — запускать приложения и пакетные файлы без окна консоли или запроса UAC

Консольные приложения и командные файлы регулярно запускаются при запуске Windows или по расписанию. Основное неудобство этого заключается в том, что каждое приложение открывает окно консоли, которое мерцает на экране. Hidden Start (или Hstart) — это облегченная утилита командной строки, которая позволяет запускать консольные приложения и командные файлы без каких-либо окон в фоновом режиме, обрабатывать повышение привилегий UAC в Windows 7 и Vista, запускать несколько команд параллельно или синхронно и многое другое. .

Улучшите этот ответ
отредактировал 12 июня ’20 в 13:48
Сообщество ♦
1
ответил 12 мая ’10 в 16:03
  • Это очень красиво разработанное и полезное приложение. — Гуру Джош 18 мая ’17 в 3: 40
добавить комментарий |

Использовать скрытый запуск (стоит 20 долларов)

Скрытый запуск — запускать приложения и пакетные файлы без окна консоли или запроса UAC

Консольные приложения и командные файлы регулярно запускаются при запуске Windows или по расписанию. Основное неудобство этого заключается в том, что каждое приложение открывает консоль. то, что мерцает на экране. Hidden Start (или Hstart) — это облегченная утилита командной строки, которая позволяет запускать консольные приложения и командные файлы без каких-либо окон в фоновом режиме, обрабатывать повышение привилегий UAC в Windows 7 и Vista, запускать несколько команд параллельно или синхронно и многое другое. .

Оцените статью
logicle.ru
Добавить комментарий