批处理脚本在winrs命令后停止执行

我有一个包含调用winrs的脚本,以便远程启动用户指定目标机器上的.exe的执行。

我想要以下function:

  • 启动脚本
  • 提示用户input目标PC的名称
  • winrs到执行.exe的目标PC,并告诉用户谁运行脚本,这正在完成。
  • 停止执行winrs并告诉脚本运行完成的用户。
  • 出口。
  • 我希望脚本运行在机器上的所有输出,并且不希望在目标机器上显示任何活动。

我有的代码如下:

@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语句从不执行。

如何让远程shell在运行.exe之后自动closures,并在脚本已经执行完毕的情况下回应某种确认脚本已经完成?

所有帮助赞赏!

您正在使用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>>&1