gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:42:16 26 4
gpt4 key购买 nike

我有一个脚本,其中包含对 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 退出并且“终止批处理作业(Y/N)”出现在 cmd 提示符中,但是最后的 echo 语句永远不会执行。

如何让远程 shell 在 .exe 运行后自动关闭,并在执行脚本的人的提示下回显脚本已完成的某种确认?

感谢所有帮助!

最佳答案

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

@回声关闭

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

关于windows - 批处理脚本在 winrs 命令后停止执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46424334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com