Batch file 向变量添加空间的批处理文件

Batch file 向变量添加空间的批处理文件,batch-file,command-line,cmd,window,Batch File,Command Line,Cmd,Window,这是我最近几天一直在使用的备份批处理文件。直到今天早上,它一直运转良好。出于某种原因,当它创建变量foldername时,它在字符串中包含一个以前没有的空格。结果是这样的: @ECHO OFF CLS REM Start Backup TITLE Backup SETlocal EnableDelayedExpansion REM Capture the date/time(right down to the second) and then assign it to a variabl

这是我最近几天一直在使用的备份批处理文件。直到今天早上,它一直运转良好。出于某种原因,当它创建变量
foldername
时,它在字符串中包含一个以前没有的空格。结果是这样的:

@ECHO OFF 
CLS

REM Start Backup
TITLE Backup

SETlocal EnableDelayedExpansion

REM Capture the date/time(right down to the second) and then assign it to a variable
SET yy=%date:~-4%
SET dd=%date:~-7,2%
SET mm=%date:~-10,2%
SET newdate=%dd%%mm%%yy%_%Time:~0,8%
SET newdate=%newdate::=%
SET foldername=svetlana_backup_%newdate%

REM Variables
SET drive=R:
SET sevenZip=%USERPROFILE%\7z.exe

SET destination=R:\Backup

ECHO Running Backup Batch File

ECHO Please Plug in %drive%
PAUSE

ECHO %foldername%

MKDIR %destination%\%foldername%

FOR /F "tokens=1,2 delims=," %%i IN (backuplist.txt) DO (

    SET completeSource=%%i
    SET completeDestination=%destination%\%foldername%\%%j

    ECHO Source: "!completeSource:"=!"
    ECHO Destination:"!completeDestination:"=!"

    MKDIR "!completeDestination:"=!"
    XCOPY "!completeSource:"=!" "!completeDestination:"=!" /E /F
)

REM Zip the folder using the 7z command line utility
%sevenZip% a -tzip %destination%\%foldername%.zip %destination%\%foldername%

REM Remove the unzipped backup folder
RMDIR /Q /S %destination%\%foldername%

PAUSE
EXIT

由于某种原因,直到今天,仪表板和93829之间的空间才出现。如何删除它并防止它再次发生?

您可以像这样解析文件-/foldername
set foldername=%foldername:=%

这将用空字符串替换所有空格


这个问题很可能是因为测试运行的时间只有一位数字。使用该
%时间:~0,8%
将输出包含额外空间的时间,因为时间将按如下方式存储:
9:38:29
,这是7个字符,您读取了最后8个字符。

有效(给我9分钟,让我等待,然后再接受答案),但为什么突然出现了这个问题?直到今天才发生。编辑的答案:)将空格替换为零而不是删除可能是更好的解决方案(所有文件的格式相同,因此易于排序)
svetlana_backup_22092016_ 93829