DOS批处理 - 打印文件名(不包括某些扩展名)

时间:2012-06-12 00:26:42

标签: loops filenames dos

问题是关于实际的DOS批处理文件,而不是Windows cmd.exe脚本文件。

如何排除在for循环中处理特定扩展名的文件?

@echo off

set myExtension=

for /r C:\ %%i in (*) do (
    ::notDesirableExtension
    if myExtension != gif or jpg
        ...
    echo myFiles >> F:\list.txt
) 

1 个答案:

答案 0 :(得分:3)

由于您可以访问FOR / R,这意味着您可以访问命令扩展。所以答案是微不足道的。

@echo off
for /r C:\ %%i in (*) do (
  if "%%~xi" neq ".jpg" if "%%~xi" neq ".gif" >>F:\list.txt echo %%i
)

但是根本没有理由使用FOR循环,因为你也应该有权访问FINDSTR。这个FINDSTR解决方案应该更快。并且不需要批处理文件。它在命令行上运行得很好。

dir /s /b /a-d-h-s | findstr /live ".jpg .gif" >F:\list.txt

在Windows 2000之前没有引入命令扩展,这不是真正的DOS。