Почему пакетный файл иногда зависает при выполнении приложения?

В настоящее время я занят, пытаясь автоматизировать некоторые задачи ручного запуска в Windows 10 с помощью пакетного файла. Но я столкнулся со странной проблемой.

Я хочу создать пакетный скрипт, который будет запускать Xming с некоторыми параметрами. Поэтому я подумал, что могу просто поместить это в командный файл.

"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Если я выполню это в открытом командном окне, он будет работать нормально даже несколько раз подряд, не запуская более 1 экземпляра Xming. Но как только я помещаю только эту строку в bat-файл и запускаю этот скрипт, он иногда работает, а иногда зависает навсегда.

Я некоторое время искал в Google и не могу найти ничего, описывающего проблему, с которой я столкнулся. Любая помощь приветствуется.

Вот вывод командной строки, иллюстрирующий мою проблему:

C:\Users\JS>"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

C:\Users\JS>"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

C:\Users\JS>"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

...

C:\Users\JS>"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

C:\Users\JS>"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

C:\Users\JS>
C:\Users\JS>cd desktop

C:\Users\JS\Desktop>startup.bat

C:\Users\JS\Desktop>"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

... Hangs forever here

Где startup.bat содержит только 1 строку:

"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

person John Smith    schedule 24.09.2017    source источник
comment
Помогает ли вам команда Start? @Start "" "%ProgramFiles(x86)%\Xming\Xming.exe" :0 -clipboard -multiwindow, если нет, то вам может понадобиться запустить Cmd.exe с вашей командой, прикрепленной к его концу.   -  person Compo    schedule 24.09.2017


Ответы (1)


Я предлагаю также использовать команду START, например Compo, чтобы явно запустить это приложение в отдельном процессе.

start "Xming" /D"%ProgramFiles(x86)%\Xming" "%ProgramFiles(x86)%\Xming\Xming.exe" :0 -clipboard -multiwindow

После того, как интерпретатор команд Windows выполнил команду СТАРТ, он немедленно продолжает выполнение следующей строки в пакетном файле, в то время как Xming выполняется в отдельном процессе, работающем параллельно командному процессу, выполняющему пакетный файл. .

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

Второй аргумент, начинающийся с /D, определяет начало в каталоге (текущем каталоге) для запуска приложения. Здесь указано, что текущим каталогом для Xming является каталог его программных файлов. Это может быть важно, так как некоторые приложения плохо закодированы и работают неправильно, если текущий каталог процесса при его запуске не является каталогом программных файлов приложения.

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

Запустите в окне командной строки start /?, чтобы вывести справку по этой команде, объясняющую ее и ее параметры.

person Mofi    schedule 25.09.2017