我使用以下代码打开应用程序。电脑列表有我想要执行程序的所有远程电脑的 IP 地址列表和一个虚拟 IP0.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%"
)
)
)
我的问题是,当我运行上述批处理文件时,应用程序会打开,并且主 PC 和从 PC 的后台也会打开一个空的 cmd 控制台。直到我关闭启动的应用程序*(在本例中为 Teamviewer)*或直接关闭控制台窗口,它才会关闭。
有什么办法可以让控制台窗口自动关闭?
答案1
我找到了答案。我按照下面的更新代码进行了更改,它按我想要的方式工作。诀窍是使用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"
)
)
)