这个剧本令我困惑。我正在尝试编写一个脚本,该脚本采用最新的卷影副本dir并将其放入var中。这是我到目前为止所做的。
@ECHO off
set ShadowDir=
vssadmin list shadows|for /f "tokens=4 delims=: " %%A IN ('FINDSTR "GLOBALROOT"') do set ShadowDir=%%A
ECHO The dir is %ShadowDir%
pause
这是输出。
C:\WINDOWS\system32>set ShadowDir=\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy14
C:\WINDOWS\system32>set ShadowDir=\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy15
C:\WINDOWS\system32>set ShadowDir=\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy16
C:\WINDOWS\system32>set ShadowDir=\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy17
C:\WINDOWS\system32>set ShadowDir=\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy18
The dir is
Press any key to continue . . .
正如您所看到的,它正确解析并为我提供所需的输出。但即使发出set命令,ShadowDir var仍然为空。
知道发生了什么事吗?
答案 0 :(得分:3)
我用
for /f "tokens=4 delims=: " %%A IN ('vssadmin list shadows^|FINDSTR "GLOBALROOT"') do set ShadowDir=%%A
将vssadmin
输出传递给findstr
。