-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
@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
在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
命令,该命令不会将空格视为分隔符,因此,您的第一个示例工作的事实就是偶然事件。
尝试引用路径,因为它有空格:''G:\ Games \ Console \ ROMS \ MAME \ Games \ 1P \ 1P Breakout \ *。zip“' – Blorgbeard
是的,命令'CD'是一个例外它不会将空格视为分隔符。 – mbroshi