CMD 不会使变量相等

CMD 不会使变量相等

我正在尝试编写一个批处理脚本,将目录中所有子文件夹的名称作为变量以供其他地方使用。

令我困惑的代码部分是:

 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!)

抱歉,问题重复了。

相关内容