为什么这个批处理脚本有用......
@echo off
for /F %%a in ('dir /b F:\Temp\*.txt') do set TestFileName=%%~nxa
echo %FileName%
pause
但这个没有...
@echo off
for /F "usebackq" %%a in ('dir /b "F:\Temp Folder\*.txt"') do set TestFileName=%%~nxa
echo %FileName%
pause
我知道由于文件夹名称中的空格,它与我使用的双引号有关。但即使经过几个小时的网络搜索和阅读相似的无数帖子,我也不能为我的生活弄清楚如何解决它。它让我疯狂!
非常感谢任何帮助......
答案 0 :(得分:1)
这里有三点:
1- As“usebackq”暗示:使用Back Quotes执行命令,因此必须使用`而不是'。
2-独立于上述内容,此代码:
@echo off
for /F "usebackq" %%a in (`dir /b "F:\Temp Folder\*.txt"`) do set TestFileName=%%~nxa
echo %FileName%
pause
也不起作用,因为显示的变量FileName与FOR命令不同:TestFileName。
3-如果简单FOR的基本功能足以满足您的需要,我强烈建议您不要使用执行其他命令(如DIR)的FOR / F命令。例如:
@echo off
for %%a in ("F:\Temp Folder\*.txt") do set TestFileName=%%~nxa
echo %TestFileName%
pause
以前的代码不仅易于编写和理解,而且运行速度也更快。
最后:以前的代码“工作”,显示只是最后一个文件名。如果要通过变量显示所有名称,则必须使用不同的方法。
我希望它有所帮助...
安东尼奥