我有这个for
循环来获取目录名称列表:
for /d %%g in (%windir%\Assembly\gac_msil\*policy*A.D*) do (
echo %%g
)
输出:
C:\WINDOWS\Assembly\gac_msil\policy.5.0.A.D
C:\WINDOWS\Assembly\gac_msil\policy.5.0.A.D.O
C:\WINDOWS\Assembly\gac_msil\policy.5.20.A.D.O
C:\WINDOWS\Assembly\gac_msil\policy.5.25.A.D.O
C:\WINDOWS\Assembly\gac_msil\policy.5.35.A.D.O
C:\WINDOWS\Assembly\gac_msil\policy.5.55.A.D.O
C:\WINDOWS\Assembly\gac_msil\policy.5.60.A.D.O
C:\WINDOWS\Assembly\gac_msil\policy.5.70.A.D.O
C:\WINDOWS\Assembly\gac_msil\policy.6.0.A.D.O
我想获取以“policy”开头的文件夹名称,但是
echo %%g:~29
不起作用。我还尝试先
set x=%%g
,然后再echo %x:~29%
,但仍然无法正常工作。那么,如何从
for
循环的 token 中获取子字符串? 最佳答案
当然,set x=%%g
和x的子字符串提取应该可以工作,但是请注意,如果子字符串是在FOR循环中使用的,则必须使用!而不是%(延迟扩展):
setlocal EnableDelayedExpansion
for /d %%g in (%windir%\Assembly\gac_msil\*policy*A.D*) do (
set x=%%g
echo !x:~29!
)
关于string - 在for循环中获取 token 的子字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8648178/