在循环批处理文件中,mkdir、robocopy、date\time 文件夹出现问题

在循环批处理文件中,mkdir、robocopy、date\time 文件夹出现问题

我到处都搜索过了,但还是找不到解决方案。我不确定这里发生了什么,但我迫切需要一些关于这个问题的帮助,我正在运行一个批处理文件(游戏服务器监视器/崩溃重启程序的脚本)。

我决定添加一个日志文件存档片段,它会创建一个以日期命名的文件夹和一个以时间命名的子文件夹,然后 robocopy /mov 将主文件夹中的日志复制到每次游戏服务器重启(3 小时)时创建的存档文件夹。

我单独测试了该代码片段,并在其余批处理脚本中对其进行了测试,结果发现它运行良好,我还确认它可以在服务器启动时运行该脚本的任务计划程序中运行,但是我注意到它可能只运行一次,然后下次需要创建新目录并将日志移动到新的日期\时间时,它会移动到上一个日期\时间文件夹,而不会创建新的时间目录,这是我使用的一个例子,

@echo off
set PROFILE=C:\GameServers\Server1\Profile
set SVR_LOGS=C:\GameServers\Server1\Profile\Logs\Archived_Logs
set ARC_FOLDER=%date:~10,4%_%date:~7,2%_%date:~4,2%\%time:~0,2%-%time:~3,2%-%time:~6,2%

echo Archiving Logs...
timeout 3 >nul
cd %SVR_LOGS%
mkdir %ARC_FOLDER%
robocopy *.log %PROFILE% %SVR_LOGS%\%ARC_FOLDER% /mov
robocopy *.adm %PROFILE% %SVR_LOGS%\%ARC_FOLDER% /mov
robocopy *.rpt %PROFILE% %SVR_LOGS%\%ARC_FOLDER% /mov
robocopy *.mdmp %PROFILE% %SVR_LOGS%\%ARC_FOLDER% /mov
cls
echo Log Archive Complete!...
timeout 3 >nul
cls

我也尝试过其他方法,但无论我使用哪种方法,结果似乎都一样,游戏服务器主机是一个在专用服务器上运行服务器 2016 的虚拟机,服务器为 2019(长话短说,不用担心,简而言之,这是为了测试目的)

答案1

你应该使用这个:

@echo off
set PROFILE="C:\GameServers\Server1\Profile" 
set SVR_LOGS="C:\GameServers\Server1\Profile\Logs\Archived_Logs"
 set ARC_FOLDER="%date:~10,4%_%date:~7,2%_%date:~4,2%\%time:~0,2%-%time:~3,2%-%time:~6,2%" 
echo Archiving Logs... 
timeout 3 >nul 
Pushd %SVR_LOGS% 
mkdir %ARC_FOLDER% 
Move *.log %PROFILE% 
Move *.log %SVR_LOGS%\%ARC_FOLDER% 
Move *.adm %PROFILE% 
Move *.adm %SVR_LOGS%\%ARC_FOLDER% 
Move *.rpt %PROFILE%
Move *.rot %SVR_LOGS%\%ARC_FOLDER% 
Move *.mdmp %PROFILE% 
Move *.mdmp %SVR_LOGS%\%ARC_FOLDER%
cls 
echo Log Archive Complete!... 
timeout 3 >nul 
cls

相关内容