无法使批处理脚本工作

时间:2014-08-16 02:08:55

标签: batch-file

问题在于脚本如果进程以与批处理脚本相同的方式运行,那么它将不起作用。它只是找不到这个过程。有帮助吗? http://pastebin.com/qUrhxYrT

@echo off
title Unturned Server Restarter
echo Server Batch by :: Mage ::

:loop

echo (%time%) Loot Resetting...
start Unturned.exe -nographics -pei -normal -nosync -pvp -port:25444 -players:12 -sv -batchmode
for /f "tokens=2" %%x in ('tasklist ^| findstr Unturned.exe') do set PIDTOKILL=%%x
echo (%time%) Loot Reset.
echo (%time%) Server is online.
echo (%time%) Server Loot Resetting in 2 Hours.
timeout /t 10 >null
echo (%time%) Server Loot now resetting . . .
taskkill /F /PID %PIDTOKILL%

goto loop

2 个答案:

答案 0 :(得分:0)

当您启动具有提升权限的批处理文件时,工作目录将设置为system32文件夹。

据推测,您的脚本无法找到Unturned.exe文件,因此使用cd命令在循环之前设置工作目录是解决此类问题的一种方法。

答案 1 :(得分:0)

请参阅下面的代码,其中包含所有可执行文件的完整路径。

@echo off
title Unturned Server Restarter
echo Server Batch by :: Mage ::

:loop

echo (%time%) Loot Resetting...
start "Unturned" "%ProgramFiles%\team\steamapps\common\Unturned\Unturned.exe" -nographics -pei -normal -nosync -pvp -port:25444 -players:12 -sv -batchmode
for /f "tokens=2" %%x in ('%SystemRoot%\System32\tasklist.exe ^| %SystemRoot%\System32\findstr.exe Unturned.exe') do set PIDTOKILL=%%x
echo (%time%) Loot Reset.
echo (%time%) Server is online.
echo (%time%) Server Loot Resetting in 2 Hours.
timeout /t 10 >null
echo (%time%) Server Loot now resetting . . .
%SystemRoot%\System32\taskkill.exe /F /PID %PIDTOKILL%

goto loop

由于我不知道您的计算机上安装了Unturned.exe,您可能需要调整字符串"%ProgramFiles%\team\steamapps\common\Unturned\Unturned.exe"

%ProgramFiles%是对环境变量 ProgramFiles 的字符串值的引用,通常包含C:\Program Files

在64位Windows上还有环境变量 ProgramFiles(x86),如果%ProgramFiles(x86)%安装在Unturned.exe以下,则需要在批处理代码中与C:\Program Files (x86)一起使用{1}}。