[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理命令for和findstr如何对文件进行高级筛选?

因为不同的文件有不同的用处,所以我在文件名里加入特定的关键字加以区别。比如:
[A]xxx
[B]xxx
[A][B]xxx
[A][C]xxx
[B][D]xxx
[A][B][C]xxx
[A][B][D]xxx
[A][B][C][D]xxx

在某一次筛选时,我需要把[A][B]挑出来,但不需要包含[C]和[D]的,我的思路是这样的:


for /f "delims=" %%i in ('dir /s /b "目录\*[A]*.apk" ^| findstr "[B]"') do (

检查软件名是否包含[C],是,则跳过这个文件,否则继续下面语句
检查软件名是否包含[D],是,则跳过这个文件,否则继续下面语句


对符合筛选条件的文件进行一系列批处理(这部分我写好了)

)

在for语句里,既不能用goto,也不能用call,那我该怎么跳过不想要的文件呢?

  1. dir /b *[A]*[B]*.apk | findstr /v "[C] [D]"
复制代码
早中晚各问自己一遍:你平均每周帮助别人解决几个问题?

TOP

回复 2# find

这样貌似严谨一点:
  1. dir /b *[A]*[B]*.apk *[B]*[A]*.apk | findstr /v /l "[C] [D]"
复制代码

TOP

谢谢楼上两位,都怪自己看帮助不仔细,原来findstr 命令本身带了排除功能的。

本帖内容已经得到解决!

TOP

返回列表