Я использую ниже кодирования, чтобы открыть приложение. Список ПК содержит список всех IP-адресов удаленных ПК, на которых я хочу выполнить программу, и фиктивный IP-адрес 0.0.0.0, наконец, для запуска программы на главном компьютере.

@echo off
setlocal enableextensions enabledelayedexpansion
st b="C:\Program Files\TeamViewer\TeamViewer.exe"
For %%B in (%b%) do (
    Set c=%%~dpB
    Set d=%%~nxB
)
for /f "tokens=*" %%a in (C:\COST\PCList.txt) do (
IF %%a equ 0.0.0.0 (
cd %c%
"%d%"
) ELSE (
ping %%a -n 1 -w 100
IF errorlevel 1 (
ECHO REMOTE %%a IS NOT REACHABLE
) else (
psexec \\%%a -i -d -s cmd /c cd %c%
psexec \\%%a -i -d -s cmd /c "%d%"
)
)
)

Моя проблема в том, что когда я запускаю вышеупомянутый пакетный файл, приложение открывается, а также пустая консоль cmd открывается в фоновом режиме как в главном, так и в подчиненном ПК. Он не закрывается, пока я не закрою запущенное приложение *(в данном случае Teamviewer)* или непосредственно окно консоли.

Есть ли способ заставить окно консоли закрываться автоматически?

1 ответ1

0

Я нашел ответ. Я изменил кодировку, как показано ниже, и она работает так, как я хотел. Хитрость заключалась в том, чтобы использовать синтаксис start как показано ниже, для запуска приложения и закрытия консоли с помощью exit.

@echo off
setlocal enableextensions enabledelayedexpansion
st b="C:\Program Files\TeamViewer\TeamViewer.exe"
For %%B in (%b%) do (
    Set c=%%~dpB
    Set d=%%~nxB
)
for /f "tokens=*" %%a in (C:\COST\PCList.txt) do (
IF %%a equ 0.0.0.0 (
cmd /s /k "cd %c% && start "" "%d%" && exit"
) ELSE (
ping %%a -n 1 -w 100
IF errorlevel 1 (
ECHO REMOTE %%a IS NOT REACHABLE
) else (
psexec \\%%a -i -d -s cmd /s /k "cd %c% && start "" "%d%" && exit"
)
)
)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .