Удаление одного ShadowCopy с помощью командного файла
Я работаю над изменением командного файла, используемого для резервного копирования. Когда он запускается, он создает новую теневую копию, монтирует ее, создает резервные копии того, что должен, и отключает его. То, что я хотел бы сделать, это удалить созданную им теневую копию. Мне не нужно удалять существующие теневые копии по криминалистическим причинам. Вот раздел кода, который у меня есть и с которым я сталкиваюсь.
:DeleteNewSCopy
REM : Locates then removes the last created shadowcopy.
SET ShadowID=
FOR /F "usebackq tokens=1,2* delims=:" %%A IN (`FINDSTR /I /C:"Shadow Copy ID:" %TempFile%`) DO SET ShadowID=%%B
IF NOT "%ShadowID%" == "" (
REM : Last ShadowCopy ID was found, Nuke it.
vssadmin delete shadows /Shadow=%ShadowID%
) ELSE (
ECHO No ShadowCopy ID found.
)
GOTO :EOF
Линия FOR, кажется, работает правильно. Когда я вывожу%ShadowID% во время выполнения, я получаю:
ShadowID: {4fcb026a-08fe-4a34-b198-da7560db57bf}
Но строка для удаления shadowcopy не работает с:
Error: Invalid option value.
В командной строке я могу задать для ShadowID ту же строку и выполнить команду без проблем, поэтому мне кажется, что она должна работать в командном файле.
Любая помощь будет оценена.
1 ответ
Я обнаружил, что проблема не в коде, а в том, как я вытягивал переменную ShadowID. У него было ведущее пространство, которое нужно было убрать. Я использовал решение, опубликованное Foumpie, чтобы исправить это.