【发布时间】:2015-02-17 11:30:03
【问题描述】:
我和我的几个朋友正在使用 Dropbox 上的共享文件夹,其中上传了我们的 Minecraft 服务器。这样做的重点是,任何人都可以随时启动服务器,而不需要一个人一直运行它。
唯一的问题是,两个人可能同时启动服务器,并且可能会出现重叠的保存文件。为了解决这个问题,我想编写一个简单的批处理文件。
逻辑是这样的:
如果进程“minecraft_server.1.8.1”正在运行,请将服务器文件夹重命名为“RUNNING AS _INSERT_NAME_HERE_”,否则将其重命名为“Minecraft 服务器”
NAME 将被读取为计算机名称(如果可能的话),或从用户创建的某个 txt 文件中读取(写入自己的名称)
我从未编写过批处理文件,我不知道这是否可能,但它似乎很简单,任何帮助将不胜感激。
提前谢谢你。
好的,经过一番修改,我编写了我的第一个批处理文件。在大多数情况下,它似乎在工作,但是我似乎无法实现正确的循环。
@echo off
IF EXIST *_RUNNING.txt (
echo "ERROR, SERVER ALREADY RUNNING as %computername%"
pause
EXIT
) ELSE (
copy NUL %computername%_RUNNING.txt
START /WAIT minecraft_server.1.8.1.exe
tasklist /FI "IMAGENAME eq javaw.exe" 2>NUL | find /I /N "javaw.exe">NUL
:loop
IF "%ERRORLEVEL%"=="0" (
TIMEOUT /t 5
GOTO loop
) ELSE (
del %computername%_RUNNING.txt
echo "Server ended."
pause
EXIT ) )
当我启动 minecraft_server.1.8.1.exe 时,它会启动 javaw.exe,这就是启动服务器的实际进程。之后,我只检查进程是否仍在运行。但是我似乎无法循环代码的特定部分,我不断收到语法错误。
【问题讨论】:
-
通过重命名文件夹,您将触发 dropbox 重新上传文件夹的内容,这将导致大量额外的网络流量和延迟,同时将更改同步到所有用户。如何使用一个小的临时文件(例如 MinecraftIsRunning.txt)来表示我的世界服务器正在运行?批处理文件可以在您运行它时检查该文件是否存在 - 如果它存在就退出,否则创建文件并运行我的世界服务器并让批处理文件等到我的世界服务器退出
标签: windows batch-file