使循环批处理文件中的匹配无效
Invalidate match in batch file for loop
我的目录结构如下:
>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
?
您似乎对 for /r
的语法有点困惑。应该是
for /r "folder" %f in (filemask) do echo %f
如果您将其放入 .bat 脚本中,您还应该双抽百分号。
无论如何,如果您所做的只是 echo
结果,那么排除“.IgnoreMe”的最简单方法是将输出通过管道传输到 find /v ".IgnoreMe"
.
for /r "c:\SomeFile" %%f in (*) do echo %%f | find /v /i ".IgnoreMe"
另一方面,如果您使用 echo
只是为了演示而不是实际生产,那么您可以使用 for /f
循环执行 dir /s /b
来达到相同的效果。
for /f "delims=" %%f in ('dir /s /b "c:\SomeFile" ^| find /v /i ".IgnoreMe"') do echo %%f
如果你真的想玩得开心,你可以利用 for /d
排除隐藏文件夹这一事实。
attrib +h "c:\SomeFile\.IgnoreMe" >NUL 2>NUL
for /d /r "c:\SomeFile" %%I in (*) do (
for %%J in ("%%~I\*") do echo "%%~fJ"
)
尽管代码更多,但它比使用 find /v
进行排除更有效(更快)。您经常会发现内部 cmd
函数比 find.exe
.
等可执行文件执行得更快
我的目录结构如下:
>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
?
您似乎对 for /r
的语法有点困惑。应该是
for /r "folder" %f in (filemask) do echo %f
如果您将其放入 .bat 脚本中,您还应该双抽百分号。
无论如何,如果您所做的只是 echo
结果,那么排除“.IgnoreMe”的最简单方法是将输出通过管道传输到 find /v ".IgnoreMe"
.
for /r "c:\SomeFile" %%f in (*) do echo %%f | find /v /i ".IgnoreMe"
另一方面,如果您使用 echo
只是为了演示而不是实际生产,那么您可以使用 for /f
循环执行 dir /s /b
来达到相同的效果。
for /f "delims=" %%f in ('dir /s /b "c:\SomeFile" ^| find /v /i ".IgnoreMe"') do echo %%f
如果你真的想玩得开心,你可以利用 for /d
排除隐藏文件夹这一事实。
attrib +h "c:\SomeFile\.IgnoreMe" >NUL 2>NUL
for /d /r "c:\SomeFile" %%I in (*) do (
for %%J in ("%%~I\*") do echo "%%~fJ"
)
尽管代码更多,但它比使用 find /v
进行排除更有效(更快)。您经常会发现内部 cmd
函数比 find.exe
.