无法在CMD中使用for / f设置变量

时间:2015-02-01 19:40:16

标签: batch-file for-loop cmd

这个剧本令我困惑。我正在尝试编写一个脚本,该脚本采用最新的卷影副本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仍然为空。

知道发生了什么事吗?

1 个答案:

答案 0 :(得分:3)

我用

for /f "tokens=4 delims=: " %%A IN ('vssadmin list shadows^|FINDSTR "GLOBALROOT"') do set ShadowDir=%%A

vssadmin输出传递给findstr