win batch中for循环中的空格

White spaces in the for loop in win batch

我的 Windows 批处理脚本中有以下循环

set Folder = %~1

for %%M in (d:\%Folder%\*.exe) do (
    set FileName = %%~nM
    echo !FileName!
) 

当其中一个文件夹有 space 时,%%M 在第一个 space 之前是有价值的。 我该如何解决?

set "Folder=%~1"

for %%M in ("d:\%Folder%\*.exe") do (
    set "FileName=%%~nM"
    echo !ModuleName!
) 

不知道 ModuleName 的来源(我想你也有延迟扩展的地方)...

!不要使用 set 命令在等号周围使用空格,否则空格将包含在变量名及其值中!

在普通的 FOR 循环中,您可以在包含分隔符的项目中加上双引号并正确处理它们。