示例1:
@echo off
cd G:\Games\Console\ROMS\MAME\Games\1P\1P Breakout\
for %%f in (*.zip) do echo %%~nf
示例2:
@echo off
for %%f in (G:\Games\Console\ROMS\MAME\Games\1P\1P Breakout\*.zip) do echo %%~nf
答案 0 :(得分:0)
for
循环中括号内的是一个以空格分隔的集合,它支持通配符。在第一个示例中,通配符表达式(*.zip)
展开以提供集合(a.zip b.zip c.zip ...)
,并且for
循环遍历该集合。
在第二个示例中,您的集合中的元素为G:\Games\Console\ROMS\MAME\Games\1P\1P
和Breakout\*.zip
。据推测,这给出了一个单元素集,因为Breakout\*.zip
中的通配符可能会扩展为空集。
要解决此问题,您需要添加引号:
for %%f in ("G:\Games\Console\ROMS\MAME\Games\1P\1P Breakout\*.zip") do echo %%~nf
请注意,通常,您需要在批处理中包含空格的文件路径周围添加引号。极少数例外情况之一是CD
命令,它不将空格视为分隔符,因此您的第一个示例工作的事实是一种意外。