从卷影副本备份



因此,我想使用批处理脚本从卷影副本进行备份。这就是我目前所拥有的:

vssadmin list shadows | findstr /C:"Volume da Cópia de Sombra"

输出:

     Volume da Cópia de Sombra: \?GLOBALROOTDeviceHarddiskVolumeShadowCopy1
     Volume da Cópia de Sombra: \?GLOBALROOTDeviceHarddiskVolumeShadowCopy2
     Volume da Cópia de Sombra: \?GLOBALROOTDeviceHarddiskVolumeShadowCopy5

我只需要得到findstr返回的最后一行中的路径,但我真的不知道该如何完成

在获得路径并在末尾添加一个(只有当路径以结束时,它才会建立符号链接)后,建立一个到它的符号链接。

mklink c:shadowcopy /d %path%

所以,我在这中间迷路了

我找到了这个问题的答案:

输出findstr 最后一行的批处理文件

但是,伙计,批处理语法一团糟,我不理解答案中的一行代码来适应我的项目。

有人能帮我详细解释我需要做什么吗(或者代码,如果你提供的话),这样我就可以理解我在做什么,而不仅仅是粘贴和复制,谁知道呢,做一些改进/更改。

每当您想要捕获命令的输出时,请使用for /f。我建议?在这种情况下是一个方便的分隔符。

这个片段将为所有卷影副本创建链接。

if not exist c:shadowcopy md c:shadowcopy
for /f "tokens=2 delims=?" %%I in ('vssadmin list shadows ^| find "GLOBALROOT"') do (
    mklink /d c:shadowcopy%%~nxI \?%%I
)

这个片段将从阴影列表的最后匹配行创建一个链接。

for /f "tokens=2 delims=?" %%I in ('vssadmin list shadows ^| find "GLOBALROOT"') do (
    set "target=\?%%I"
)
mklink /d c:shadowcopy %target%

看到区别了吗?在第一个代码块中,mklinkfor /f循环的每一次迭代中触发,并创建许多符号链接;而在第二块中,set在每次迭代时重写存储在%target%中的值。mklink在循环外运行,因此只创建一个符号链接。我想这就是你要找的秘制酱汁。

在cmd控制台中,输入help for以获取有关for /f循环的详细信息。

相关内容

  • 没有找到相关文章

最新更新