【问题标题】:Batch file to insert line into open window将行插入打开窗口的批处理文件
【发布时间】:2017-12-05 15:55:26
【问题描述】:

我确信这是可能的,但我不是 100% 确定如何。 我在我的个人电脑上为多人版饥荒 (DST) 托管了一个专用服务器,我使用单个 .bat 文件来启动它:

h:\steamcmd\steamcmd.exe +login anonymous +app_update 343050 validate +quit
cd /D "h:\steamcmd\steamapps\common\Don't Starve Together Dedicated Server\bin"
start dontstarve_dedicated_server_nullrenderer -console -cluster CarnageServer -shard Master
start dontstarve_dedicated_server_nullrenderer -console -cluster CarnageServer -shard Caves

它基本上会启动 2 个连接的服务器(Master 和 Caves),并将它们都作为我桌面上打开的 CMD 窗口。 这一切都运行良好等没有问题。

但是当我关闭计算机时,我必须在两个窗口中使用命令“c_shutdown(true)”来关闭并保存每个服务器。 (我不能只关闭窗口,它不会保存) 由于 CMD 窗口非常活跃,因此很难在其中输入任何内容。

我的问题是;有没有办法制作一个可以在每个窗口中插入“c_shutdown(true)”行来执行命令的.bat文件?

然后我基本上可以在我的桌面上留下一个快捷方式,然后双击它以保存并完全关闭服务器,而无需太多麻烦。

感谢您的帮助。

【问题讨论】:

  • 尝试使用 sendkeys.bat - call sendkeys.bat "server_console_title" "c_shutdown(true)" - 它应该在单独的 cmd 会话中执行。

标签: windows batch-file cmd


【解决方案1】:

这完全取决于标题栏中的标题。假设标题是 Master and Cave,你可以这样做

@setlocal
@set script="%temp%\exit.js"
@echo var oShell = new ActiveXObject('WScript.Shell') > %script%
@echo oShell.AppActivate(WScript.arguments(0)) >> %script%
@echo oShell.SendKeys('c_shutdown(true)\r') >> %script%

@cscript //NoLogo %script% Master
@cscript //NoLogo %script% Cave
@del %script%
@endlocal

我更喜欢使用 @ 来回显 - 您可以在要观看的行上将其删除,而不是在执行时观看所有行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 2014-12-03
    • 2015-10-20
    相关资源
    最近更新 更多