Удаление одного 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, чтобы исправить это.

/questions/3253151/kak-udalit-konechnyie-i-nachalnyie-probelyi-dlya-polzovatelskogo-vvoda-v-komandnom-fajle/3253154#3253154

Другие вопросы по тегам