Windows 如果导致小时不显示,则批处理
我有一个脚本,它执行一个简单的XCOPY例程,用于备份所有公司文件:Windows 如果导致小时不显示,则批处理,windows,batch-file,cmd,backup,Windows,Batch File,Cmd,Backup,我有一个脚本,它执行一个简单的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
@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语句中之后,它就不再输出小时
我已尝试设置%hour%=%time:~0,2%但不起作用,返回无效参数错误。这里有两个主要问题 首先,将
set
命令更改为:set hour=%time:~0,2%
(hour
,不包含%
-符号)
下一件事是,具有一位数小时值(如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%
希望有帮助