我有一个脚本,它执行一个简单的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%
但它不起作用,返回无效参数错误。
答案 0 :(得分:1)
这里有两个主要问题。
首先,将set
命令更改为:set hour=%time:~0,2%
(hour
,不附上%
- 标志)
接下来的事情是,像9点钟这样的单个数字小时值的时间将打印如下:
" 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%
。
希望有所帮助。