批处理 - 将文件重命名为时间戳时出错

时间:2013-12-18 16:04:57

标签: batch-file

我有一个从目录中获取所有内容的程序 C:\ Users \ Hensel \ Desktop \ mc-server \ world,然后将其复制并粘贴到单独的目录中 C:\用户\汉森\桌面\备份\

然后它重命名它复制的名为“world”的文件,并将其重命名为日期/时间戳格式。

@echo off
:backup
xcopy C:\Users\Hensel\Desktop\mc-server\world C:\Users\Hensel\Desktop\backups\world /I /E /Y /D
ren world Logs-%date:~10,4%%date:~7,2%%date:~4,2%_%time:~0,2%%time:~3,2%
ping localhost -n 2700 >nul
goto backup

但每当我运行它(我在备份目录中执行它)时,它都会返回错误:“命令的语法不正确。”每当我删除重命名“world”的行时,它都可以正常工作,但是备份时文件将没有唯一的名称,除非它有日期和时间戳。

1 个答案:

答案 0 :(得分:0)

如果不知道您的确切日期/时间格式,我会判断您在新文件名中有空格。

set "newname=Logs-%date:~10,4%%date:~7,2%%date:~4,2%_%time:~0,2%%time:~3,2%.txt"
set newname=%newname: =0%
ren world %newname%

如果这不起作用(它应该),那么告诉我们

会发生什么
echo newname="%newname%"

应该在REN

之前插入

所以全新的文件应该是:

@echo off
:backup
xcopy C:\Users\Hensel\Desktop\mc-server\world C:\Users\Hensel\Desktop\backups\world /I /E /Y /D
set "newname=Logs-%date:~10,4%%date:~7,2%%date:~4,2%_%time:~0,2%%time:~3,2%.txt"
set newname=%newname: =0%
ren world %newname%
echo newname="%newname%"
ping localhost -n 2700 >nul
goto backup

其中echo newname="%newname%"行是可选的

同时,您可以尝试

代替PING
timeout /t 2700 >nul

以“批准”的方式延迟45分钟。