如何启动此批处理文件,2小时后它将关闭并启动相同的程序?

时间:2014-07-03 02:04:44

标签: windows batch-file

好的,所以我制作了一台Rust服务器。我用.bat文件启动程序。 .bat文件包含:

rust_server.exe -batchmode -hostname "XtraRust" -cfg "cfg/server.cfg" -maxplayers 25 -port 28015 -datadir "serverdata/" -map "rust_island_2013"

如何制作批处理文件以启动此操作并在2小时后关闭,然后再次启动程序并自动完成所有操作?

我尝试使用:

@echo off
:loop
start rust_server.exe
timeout /t 1200 >null
taskkill /f /im rust_server.exe >nul
goto loop

但它每0.25秒开始打开一次文件,这将导致计算机崩溃。

2 个答案:

答案 0 :(得分:0)

我也有服务器。同样的问题。由于批处理忙于执行命令start rust_server.exe,因此只有一种方法可以在2小时后重新启动服务器。在手动重新启动服务器之前,它不会停止执行命令。执行此操作的唯一方法是另一个批处理文件。

@echo off
:loop
timeout /t <insert seconds here>
taskkill /im rust_server.exe
goto loop

唯一的问题是它可能会破坏服务器。我的服务器是Minecraft,你可以添加一个插件(或修改)来每2小时自动保存一次游戏。我不知道你是否可以修改生锈服务器的代码。但是,如果可以,请在新批处理文件重新启动服务器之前保存游戏。

打开服务器的批处理文件,请使用:

@echo off
color b9
mode 1000
:main
cls
rust_server.exe -batchmode -hostname "XtraRust" -cfg "cfg/server.cfg" -maxplayers 25 -port 28015 -datadir "serverdata/" -map "rust_island_2013"

大声笑我喜欢那些颜色。 “模式1000”使其全屏显示。

答案 1 :(得分:0)

您的批处理报告时没有明显的原因。

timeout似乎失败了。它位于path吗?它应该在标准安装的c:\windows\system32中。

您正在输出timeoutnull,这将创建一个名为null的文件。输出l设备的nul太多rust_server.exe。但这不应该引起你的问题。

你可以尝试

选择/ t 1200 / d y&gt; nul

应该有效地做同样的事情。

我很好奇您在批处理中调用rust_server.exe - 没有参数,当您说您有一个批处理文件来调用带有参数的rust_server.exe.bat时。你有没有机会调用那个文件task scheduler,对吗?这不会导致问题 - 只是一个奇怪的想法。

我认为使用taskkill来满足您的需求并没有真正的额外价值。您需要能够确保计划的作业在正确的凭据下运行 - 用户名,密码,权限和路径注意事项。然后,您需要将批处理安排到{{1}}现有服务器并开始新的服务器。

我受到了一个&#34;系统管理员&#34;的一小时以上的尖叫会话。谁声称无法开始计划任务是一个众所周知的&#34;世界上没有人能够解决的问题&#34;。微软三年前发布了一个修复程序(并且已经安装)这一事实并不重要(她不会停止咆哮听取这一点。)

或许那就是为什么我对Task Scheduler过敏 - 你可能需要修补你的版本。 YMMV。