我已经搜索了一段时间了,我不确定我是否只是没有使用正确的搜索词,或者答案是否真的很难找到。
我正在尝试做的是从批处理文件为游戏服务器创建一个新的 Windows 服务,然后让任务每 30 分钟或更长时间运行另一个批处理文件,该文件将在游戏服务器的命令行上运行两个命令并执行一些文件工作。
具体来说,我正在使用 Bukkit 为我帮助运营的游戏社区运行一个 Minecraft 服务器,我想确保它始终处于状态,除非我特别告诉它停止(如服务)。Bukkit 直接从批处理文件运行,并在其上运行自己的命令行。
我被告知您可以将此类事情作为服务运行,但命令行将从视图和/或交互中隐藏。这是我查询的第二部分。我有一个方便的小备份.bat文件,它将所有世界文件和用户数据文件复制到备份目录中,7zip化并删除该目录。唯一的问题是,Minecraft喜欢始终打开世界的区域文件并始终写入,这意味着如果我直接运行它可能会导致地图损坏。为了补偿,我需要在服务器上运行命令"save-off"以暂时禁用文件挂钩,运行备份,并在完成后立即运行"save-on",以便游戏可以继续而不会丢失数据。
关于第二个,我想知道的是,是否可以通过批处理文件与游戏服务进行交互,或者我是否需要创建一个应用程序来执行此操作?如果是后者,究竟该如何去做呢?我有中等C++知识(直到我在大学的第二门 OO-C++ 课程),如果绝对必要,我可能会学习另一种语言。
所以,简而言之,有两个问题:1. 是否可以以及如何将BAT文件作为Windows服务运行?2. 如何通过BAT文件与所述服务进行交互,如果不可能,我需要编写哪种应用程序(重定向到或编写教程对我有用)。
提前感谢您的任何帮助!
老问题,用户帐户在SO上似乎不再活跃,但是嘿,如果您因为遇到类似的问题而偶然发现这一点:
由于我们谈论的是Bukkit Minecraft服务器,请转到Bukkit的"Essentials"插件。它现在包括一个备份功能,可以完全按照OP的要求进行操作,即停止保存,以便可以在不损坏的情况下操作文件,启动脚本,然后重新启动。
该脚本可以是备份脚本(链接页面中提供的示例),但可用于对全局文件运行任何操作。