使用批处理文件删除一个ShadowCopy

时间:2017-07-07 17:46:03

标签: batch-file command-line cmd command shadow-copy

我正在修改用于备份的批处理文件。当它运行时,它会创建一个新的shadowcopy,安装它,备份它应该删除它并卸载它。我想要做的就是删除它创建的shadowcopy。由于法医原因,我不删除现有的shadowcopys。这是我正在使用的代码部分。

: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线似乎正常工作。当我在运行期间ECHO输出%ShadowID%时,我得到:

ShadowID:  {4fcb026a-08fe-4a34-b198-da7560db57bf}

但是删除shadowcopy的行失败了:

Error: Invalid option value.

在命令行中,我可以将ShadowID设置为具有相同的字符串并运行命令而不会出现问题,因此我似乎应该在批处理文件中工作。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我发现问题不在于我如何拉动变量ShadowID的代码。它有一个需要移除的领先空间。我使用了Foumpie发布的解决方案来修复它。

https://stackoverflow.com/a/12089079/8272143