string - 在for循环中获取 token 的子字符串?

标签 string batch-file for-loop token

我有这个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/

相关文章:

java - android应用程序关闭时如何保持最后一种语言?

c++ - 重写这个循环

java - 将额外代码添加到 for 循环的递增步骤

git - 检查 git 存储库中的特定文件是否已更改

c++ - 如何在 C++ 函数中正确使用指针?

c++ - 从文本文件初始化 vector

python - 在字符串末尾增加一个数字

python - 在Python中比较一维和二维序列的有效方法

css - 在 CSS 文件中查找和修改数值的工具/脚本?

powershell - 如何使用任务计划程序运行Cisco AnyConnect