0

我有一个脚本,它执行一个简单的 XCOPY 例程来备份我们所有的公司文件:

@echo off
IF %time:~0,2% GTR 7 (
    IF %time:~0,2% LSS 21 (

    XCOPY "R:\Sage Src" "S:\lastdata" /D /Y /E /R /K /C /H /I >> S:\sageBackupLog-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%-hour%time:~0,2%.txt

    XCOPY "R:\importantStuff" "V:\lastdata" /D /Y /E /R /K /C /H /I 
    EXIT /B 0
    )
)

但是自从将它全部包装在两个 IF 语句中之后,它就不再输出小时了。

我试过set %hour%=%time:~0,2%了,但它不起作用,返回一个无效的参数错误。

4

1 回答 1

1

这里有两个主要问题。

首先,将您的set命令更改为:(set hour=%time:~0,2%hour包含%-signs)

接下来的事情是,像 9:00 点这样具有一位数小时值的时间将打印如下:

" 9:00:00.00"

第一个数字前面有一个前导空格。这是您的错误消息的原因,因为您的文件名可能会解析为:

sageBackupLog-2012-09-11-hour 9.txt

这实际上形成了两个参数,因为名称没有包含在"

为了克服这个问题并在这些时间打印前导零,您可以使用第二条set语句进行字符串替换,将空格更改为零:

set hour=%time:~0,2%
set hour=%hour: =0%

然后,您可以安全地使用%hour%而不是%time:~0,2%在您的脚本中。

希望有帮助。

于 2012-09-11T07:56:22.907 回答