Batch file 使循环的批处理文件中的匹配无效

Batch file 使循环的批处理文件中的匹配无效,batch-file,command-prompt,Batch File,Command Prompt,我有以下目录结构: >C >SomeFile >.IgnoreMe >VitalSystemInfo.eiafj >DontTouchThis.ei3rw3j >Picture.jpg >Pandas.gif >Code.cpp >AnotherDirectory >MoreSt

我有以下目录结构:

>C
    >SomeFile
        >.IgnoreMe
            >VitalSystemInfo.eiafj
            >DontTouchThis.ei3rw3j
        >Picture.jpg
        >Pandas.gif
        >Code.cpp
        >AnotherDirectory
            >MoreStuff.bacon
我有一个循环要通过它

for /R %f in (C:\SomeFile) do echo %f

如何排除
.IgnoreMe

您似乎对/r的
语法有点困惑。应该是

对于(文件掩码)中的/r“文件夹”%f执行回显%f
如果要将其放入.bat脚本中,还应该将百分比符号加倍


无论如何,如果您所做的只是
echo
ing结果,那么排除“.IgnoreMe”的最简单方法就是将输出导入
find/v“.IgnoreMe”

对于/r“c:\SomeFile”%%f in(*)do echo%%f | find/v/i.IgnoreMe
另一方面,如果您使用
echo
只是为了演示,而不是实际生产,那么您可以通过执行
dir/s/b
循环来实现相同的效果

对于/f“delims=“%%f in('dir/s/b“c:\SomeFile”^ | find/v/i.IgnoreMe“')不回显%%f
如果你真的想变得有趣,你可以利用
for/d
排除隐藏文件夹这一事实

attrib+h“c:\SomeFile\.IgnoreMe”>NUL 2>NUL
对于/d/r“c:\SomeFile”%%I in(*)do(
对于%%J in(“%%~I\*”)执行回显“%%~fJ”
)

尽管这需要更多的代码,但它比使用
find/v
排除更高效(更快)。您经常会发现,内部
cmd
函数比可执行文件(如
find.exe
)执行得更快。您似乎对/r
语法有点困惑。应该是

对于(文件掩码)中的/r“文件夹”%f执行回显%f
如果要将其放入.bat脚本中,还应该将百分比符号加倍


无论如何,如果您所做的只是
echo
ing结果,那么排除“.IgnoreMe”的最简单方法就是将输出导入
find/v“.IgnoreMe”

对于/r“c:\SomeFile”%%f in(*)do echo%%f | find/v/i.IgnoreMe
另一方面,如果您使用
echo
只是为了演示,而不是实际生产,那么您可以通过执行
dir/s/b
循环来实现相同的效果

对于/f“delims=“%%f in('dir/s/b“c:\SomeFile”^ | find/v/i.IgnoreMe“')不回显%%f
如果你真的想变得有趣,你可以利用
for/d
排除隐藏文件夹这一事实

attrib+h“c:\SomeFile\.IgnoreMe”>NUL 2>NUL
对于/d/r“c:\SomeFile”%%I in(*)do(
对于%%J in(“%%~I\*”)执行回显“%%~fJ”
)
尽管这需要更多的代码,但它比使用
find/v
排除更高效(更快)。您经常会发现,内部
cmd
函数比
find.exe
等可执行文件执行得更快