2016-09-22 3 views
1
@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 

Это резервный пакетный файл, который я использовал последние пару дней. Это продолжалось до сегодняшнего утра. По какой-то причине, когда он создает переменную foldername, она содержит пробел в строке, где раньше не было. Он заканчивается так:Пакетный файл Добавление пространства в переменную

svetlana_backup_22092016_ 93829 

Пространство между тире и 93829 никогда не был там раньше до сегодняшнего дня по какой-то причине. Как мне удалить его и предотвратить его повторение?

ответ

1

Вы можете разобрать Файл-/FOLDERNAME как этот
set foldername=%foldername: =%

Это заменит все пробелы с пустой строкой

Проблема была, вероятно, вызвана тем, что тест проводился в то время, когда час содержит только одну цифру. При этом %Time:~0,8% выведет время, в том числе дополнительное пространство, так как время будет храниться следующим образом: 9:38:29, которые являются 7 символами, и вы читаете последние 8 единиц.

+0

Это сработало (дайте мне 9 минут, так что мне нужно подождать, прежде чем я приму ответ), но почему вдруг эта проблема возникла? Этого никогда не было до сегодняшнего дня. – AnnabelleRosemond

+0

Редактированный ответ :) – geisterfurz007

+0

Отлично. Просто прочитал и принял. – AnnabelleRosemond

Смежные вопросы