我有一个脚本,其中包含对winrs的调用,以便在用户指定的目标计算机上远程启动.exe的执行。
我需要以下功能:
我的代码如下:
@echo off
echo -------------------------------------------------------
echo PLEASE ENTER PC NAME OF DISCONNECTED MACHINE
echo -------------------------------------------------------
SET /p pcToReconnect=
echo Attempting to contact Agent.
call winrs -r:%pcToReconnect% "C:\Path\To The\exe that I want\toExecute.exe" >> logfile.txt 2>>&1
echo Agent reconnected. Please allow ~5mins for your management console to update.代码一直执行到winrs调用,实际上它确实在目标机器上执行.exe,但是似乎远程shell在这之后什么也不做。
如果我在此时按ctrl+c,“终止shell?(y/n)”将被放置在我的日志文件中(但在cmd提示符中没有输出),然后我可以按"y“并进入,远程shell在其上退出,”终止批处理作业(Y/N)“出现在cmd提示符中,但是最后一条echo语句永远不会执行。
如何在运行.exe之后使远程shell自动关闭,并在执行脚本的人的提示下对脚本完成某种确认?
所有的帮助都很感激!
发布于 2017-09-26 10:58:01
您使用的是call,它执行一个新的cmd.exe窗口,并在该新窗口中运行winrs并退出。把它移开,它就能工作了。我在结尾添加了“暂停”,以防您通过双击运行批处理。
@echo关闭
echo -------------------------------------------------------
echo PLEASE ENTER PC NAME OF DISCONNECTED MACHINE
echo -------------------------------------------------------
SET /p pcToReconnect=
echo Attempting to contact Agent.
winrs -r:%pcToReconnect% "C:\Path\To The\exe that I want\toExecute.exe" >> logfile.txt 2>>&1
echo Agent reconnected. Please allow ~5mins for your management console to update.
pause编辑
经过一些分析,似乎该批处理正在等待程序完成,因此只需使用start调用它就可以了,它应该调用它并返回到原来的提示符。
start winrs -r:%pcToReconnect% "C:\Path\To The\exe that I want\toExecute.exe" >> logfile.txt 2>>&1https://stackoverflow.com/questions/46424334
复制相似问题