如何在批处理中从生成的文件列表里排除指定文件
如何在批处理中从生成的文件列表里排除指定文件
嗨,这个问题我之前也碰到过,其实只要在循环里加个判断,把你不想包含的文件过滤掉就行啦!
你原来的命令会把批处理本身和生成的List.txt也列进去,是因为当执行重定向操作时List.txt会被提前创建,所以循环扫描的时候会把它也包含进来;而批处理文件本身就在当前目录里,自然也会被扫到。
给你两种实用的解决办法:
方法一:在for循环中添加条件判断
直接在循环里判断当前文件是不是要排除的那两个,不是的话再输出:
(for %%f in (*.*) do ( if not "%%~nxf"=="List.txt" if not "%%~nxf"=="你的批处理文件名.bat" @echo %%f )) > List.txt
注意把上面的你的批处理文件名.bat替换成你实际使用的批处理文件名称,%%~nxf是批处理里获取文件全名(文件名+扩展名)的写法,能确保匹配准确。
方法二:用dir+findstr组合过滤
也可以借助dir命令输出文件名,再用findstr反向排除指定文件:
dir /b /a-d *.* | findstr /v /i /c:"List.txt" /c:"你的批处理文件名.bat" > List.txt
dir /b /a-d:只输出当前目录下的文件名(不包含目录,且用简洁格式)findstr /v:反向匹配,也就是排除后面指定的内容/i:不区分大小写(如果不需要可以去掉)/c::用来指定要排除的单个文件名,每个文件加一个/c:参数
这两种方法都能完美解决你的问题,选你觉得顺手的用就行~
备注:内容来源于stack exchange,提问作者Sark
相关产品推荐
相关产品推荐

