我正在尝试编写一个批处理脚本,将目录中所有子文件夹的名称作为变量以供其他地方使用。
令我困惑的代码部分是:
for /d %%D in (C:\Users\tcsupport\Desktop\Test\*) ^
do (SET test=%%D
echo %%D
echo %test%
echo %test:~32%)
目录“Test”中的子文件夹为:1、2#、3、ads 和 ghf。
这些只是用于测试的随机名称。
我得到的输出是:
C:\Users\tcsupport\Desktop\Test\1
C:\Users\tcsupport\Desktop\Test\ghf
ghf
C:\Users\tcsupport\Desktop\Test\2#
C:\Users\tcsupport\Desktop\Test\ghf
ghf
C:\Users\tcsupport\Desktop\Test\3
C:\Users\tcsupport\Desktop\Test\ghf
ghf
C:\Users\tcsupport\Desktop\Test\ads
C:\Users\tcsupport\Desktop\Test\ghf
ghf
C:\Users\tcsupport\Desktop\Test\ghf
C:\Users\tcsupport\Desktop\Test\ghf
ghf
但我期望:
C:\Users\tcsupport\Desktop\Test\1
C:\Users\tcsupport\Desktop\Test\1
1
C:\Users\tcsupport\Desktop\Test\2#
C:\Users\tcsupport\Desktop\Test\2#
2#
C:\Users\tcsupport\Desktop\Test\3
C:\Users\tcsupport\Desktop\Test\3
3
C:\Users\tcsupport\Desktop\Test\ads
C:\Users\tcsupport\Desktop\Test\ads
ads
C:\Users\tcsupport\Desktop\Test\ghf
C:\Users\tcsupport\Desktop\Test\ghf
ghf
谁能解释为什么会发生这种情况或想出解决办法?
答案1
通过查看 Techie007 提供的链接中的信息,我找到了答案。
问题在于扩展延迟。将代码更改为以下内容即可解决问题。
Setlocal EnableDelayedExpansion
for /d %%D in
(C:\Users\tcsupport\Desktop\Test\*) ^
do (SET test=%%D
echo %%D
echo !test!
echo !test:~32!)
抱歉,问题重复了。