删除变量中的空格

时间:2018-05-14 21:31:24

标签: batch-file command-line cmd

问题:使用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之间包含空格。我该如何解决?

2 个答案:

答案 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