Windows 如何在FOR参数的值中展开变量?

Windows 如何在FOR参数的值中展开变量?,windows,cmd,Windows,Cmd,这里 我希望最后一行是 echo hello 1>"R:\test Chris end.m3u" 来自Magoo的答案,适用于问题案例: 注意:此解决方案在包含!的文件名上失败 @ECHO关闭 SETLOCAL enabledelayedexpansion 设置“sourcedir=U:\sourcedir” 目录%sourcedir%\*.m3u 对于(“%sourcedir%\test*.m3u”)中的%%F,请调用集“destfile=%%F”&ECHO hello>“!de

这里

我希望最后一行是

echo hello  1>"R:\test Chris end.m3u"
来自Magoo的答案,适用于问题案例:


注意:此解决方案在包含!的文件名上失败

@ECHO关闭
SETLOCAL enabledelayedexpansion
设置“sourcedir=U:\sourcedir”
目录%sourcedir%\*.m3u
对于(“%sourcedir%\test*.m3u”)中的%%F,请调用集“destfile=%%F”&ECHO hello>“!destfile!”
目录%sourcedir%\*.m3u
后藤:EOF

这里有一个方法。最好尝试解决基本目标,而不是解决复杂问题。

我从不使用带有百分号的文件名,因为它们是批处理文件中的有毒字符。这样做有什么好的理由吗?本例中的理由是包含一个变量。我还没意识到%是蝙蝠的毒药。参考资料会很有用。在my.BATs中,这似乎是无害的。解析和处理包含
%
的文件名列表时会遇到各种各样的问题,而
%
符号的数量会使问题更加复杂。原因是批处理代码将它们解释为环境变量、循环元变量或环境变量的开头。我发现批处理代码默认情况下不会将它们解释为变量。你能举个例子吗?
echo“我的文件%userprofile%.txt”
谢谢。基本目标是扩展文件名中的变量。如果您想确定您在那里看到的任何泥浆,我将尝试澄清。此解决方案在包含!的文件名上失败!。