Відповіді:
Використання START
команди для запуску кожної програми повинно отримати вам те, що вам потрібно:
START "title" [/D path] [options] "command" [parameters]
Кожна START
виклик виконує команду, задану в її параметрі, і повертається негайно, якщо не виконується з /WAIT
комутатором.
Це стосується програм командного рядка. Програми без командного рядка повертаються негайно, тому, якщо ви хочете запустити всі асинхронно, використовуйте START
.
Поєднавши пару попередніх відповідей, можна спробувати start /b cmd /c foo.exe
.
Для тривіального прикладу, якщо ви хочете роздрукувати версії java / groovy / grails / gradle, ви можете зробити це у пакетному файлі:
@start /b cmd /c java -version
@start /b cmd /c gradle -version
@start /b cmd /c groovy -version
@start /b cmd /c grails -version
Якщо у вас є щось на кшталт Process Explorer (Sysinternals), ви побачите кілька дочірніх cmd.exe-процесів, кожен з яких виконує процес java (відповідно до наведених вище команд). Вихід буде надрукований на екран у будь-якому порядку, в якому вони закінчуються.
start /b : Start application without creating a new window. The
application has ^C handling ignored. Unless the application
enables ^C processing, ^Break is the only way to interrupt
the application
cmd /c : Carries out the command specified by string and then terminates
echo off
на початку, що під час виконання сценарію не дозволить всім командам повторюватися до консолі. @
Схоже , але тільки для цієї однієї команди. Отже, іноді побачиш @echo off
.
Ви можете використовувати команду start для нерестування фонових процесів без запуску нових вікон:
start /b foo.exe
Новий процес не буде перерваний із CTRL-C; ви можете вбити його лише CTRL-BREAK (або закривши вікно, або за допомогою диспетчера завдань.)
BREAK
на клавіатурах?
Використовуйте команду START :
start [programPath]
Якщо шлях до програми містить пробіли, не забудьте додати лапки. У цьому випадку вам також потрібно вказати заголовок для вікна, що відкривається
start "[title]" "[program path]"
Якщо вам потрібно навести аргументи, додайте їх наприкінці (поза цитатами команд)
start "[title]" "[program path]" [list of command args]
Використовуйте параметр / b, щоб уникнути відкриття нового вікна консолі (але в цьому випадку ви не можете перервати додаток за допомогою CTRL-C
Є третій (і, можливо, набагато простіший) варіант. Якщо ви хочете розкручувати кілька примірників однієї програми, використання командного процесора в стилі Unix, наприклад Xargs або GNU Parallel, може зробити це досить простим процесом.
Є клон win32 Xargs під назвою PPX2, що робить це досить просто.
Наприклад, якщо ви хочете перекодувати каталог відеофайлів, ви можете запустити команду:
dir /b *.mpg |ppx2 -P 4 -I {} -L 1 ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
Розбираючи це, dir /b *.mpg
захоплює список файлів .mpg у моєму поточному каталозі, |
оператор передає цей список у ppx2, який потім будує ряд команд, які потрібно виконати паралельно; 4 за раз, як тут вказано -P 4
оператором. -L 1
Оператор каже ppx2 тільки послати одну лінію нашого каталогу лістинг на FFmpeg в той час.
Після цього ви просто пишете свій командний рядок ( ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
) і {}
автоматично підміняєте кожен рядок списку каталогу.
Це не є загальноприйнятним для кожного випадку, але набагато простіше, ніж використання обхідних пакетних файлів, описаних вище. Звичайно, якщо ви не маєте справу зі списком файлів, ви також можете передавати вміст текстового файлу чи будь-якої іншої програми на вхід pxx2.
Я не міг нічого зробити, я закінчився, просто використовуючи powerhell для запуску сценаріїв bat .. інколи навіть запуск cmd / c не працює не впевнений чому .. Я навіть спробував такі речі, як запуск cmd / c блокнота та вихід
start-Process "c:\BACKUP\PRIVATE\MobaXterm_Portable\MobaXterm_Portable.bat" -WindowStyle Hidden
help
. :)