问题:使用string substitution时,它仅适用于cleandate
,但不适用于cleantime
变量。
set backupdate=%date:~10%%date:~4,-8%%date:~7,-5%
set cleandate=%backupdate: =%
set backuptime=%time:~0,2%%time:~3,-6%%time:~6,-3%
set cleantime=%backuptime: =%
echo %cleandate%\Test
echo %cleantime%\Test
pause
输出:
C:\Users\Sveta\Desktop>echo 20180514\Test
20180514\Test
C:\Users\Sveta\Desktop>echo 172317 \Test
172317 \Test
%cleantime%
仍然在172317
和\Test
之间包含空格。我该如何解决?
答案 0 :(得分:0)
space
末尾有一个set cleantime=%backuptime: =%
。删除那个空间然后你应该好好去。
我发现有一个空间是我在命令行上尝试了这个:
C:\Users\test\Desktop>echo %time:~0,2%%time:~3,-6%%time:~6,-3%\Test
结果是:
164326\Test
这让我觉得set cleantime
可能会发生奇怪的事情。在仔细检查Visual Studio Code的Toggle Render Whitespace功能后,我能够在最后看到额外的空间。
答案 1 :(得分:0)
没有必要这样做,只要您对使用相同设置和区域设置的代码仅在PC上使用感到高兴,那么只需在第一时间正确扩展变量:
@Echo Off
Set "BackupDate=%DATE:~-4%%DATE:~-7,2%%DATE:~-10,2%"
Set "BackupTime=%TIME:~,2%%TIME:~3,2%%TIME:~6,2%"
Echo %BackupDate%\Test
Echo %BackupTime%\Test