繁体   English   中英

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

[英]Batch script stops executing after winrs command

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

我想要以下功能:

  • 启动脚本
  • 提示用户输入目标PC的名称
  • 进入执行.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,则将“ Terminate the shell?(y / n)”放置在我的日志文件中(但cmd提示符中没有输出),然后可以按“ y”并输入,远程Shell退出并在cmd提示符中出现“终止批处理作业(Y / N)”,但是最后一个echo语句从不执行。

在运行.exe之后,如何使远程外壳程序自动关闭,并在执行该脚本的任何人的提示下回显某种形式的脚本确认的确认?

所有帮助表示赞赏!

您正在使用执行新cmd.exe窗口并在该新窗口中运行winrs并退出的call 删除它,它将起作用。 我在末尾添加了暂停,以防您双击运行批处理。

@回声关闭

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM