无法在 CMD 中使用 for /f 获取要设置的变量

Can't get a variable to set using for /f in CMD

这个脚本让我感到困惑。我正在尝试编写一个脚本,该脚本采用最新的影子副本目录并将其放入 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 仍然是空的。

知道发生了什么事吗?

我会用

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

vssadmin 输出传递给 findstr