如何通过CMD批处理仅输出.wad和.zip文件的列状文件名
解决方案
方法1:dir配合findstr过滤冗余内容
这是最贴近你原本dir /w使用习惯的方案,通过findstr剔除不需要的系统信息行:
dir /w *.wad *.zip | findstr /v /c:"Volume " /c:"Directory of " /c:"bytes" /c:"File(s)" /c:"Dir(s)"
/v参数:表示反向匹配,即排除后续指定的行- 每个
/c:"..."对应一条需要排除的冗余内容,覆盖了dir输出里的卷标、目录路径、文件统计等所有无关行
方法2:for循环实现纯净列状输出
如果你之前用for命令失败,大概率是批处理文件中需要用%%F而非命令行里的%F。以下脚本会收集所有目标文件,然后利用控制台自动换行实现列状排列:
@echo off setlocal enabledelayedexpansion set "files=" for %%F in (*.wad *.zip) do set "files=!files! %%F" echo !files! endlocal
控制台会根据窗口宽度自动将文件名列表拆分为多列,效果和dir /w一致,且仅输出文件名。
方法3:极简过滤(限无空格文件名)
如果你的目标文件名都不含空格,可以用更简单的方式——只保留包含.的行(冗余行基本都没有.):
dir /w *.wad *.zip | findstr "\."
注意:这个方法有局限性,若存在不含.的文件名(虽然你指定的是.wad和.zip格式,理论上不会),或者冗余行意外包含.,则会失效。
内容的提问来源于stack exchange,提问作者ilker
相关产品推荐
相关产品推荐

