找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21558|回复: 8

[文件操作] [已解决]请问批处理if用法:带temp的路径过滤掉

[复制链接]
发表于 2021-9-29 20:04:56 | 显示全部楼层 |阅读模式
下面的结果的查找plus文件夹后得到的结果  贴上运行的代码
  1. dir /b /s /a:d plus
复制代码
D:\batsix\aaa\bbbb218\plus
D:\batsix\aaa\bbbb218\temp\plus
D:\batsix\aaa\bbbb219\plus
D:\batsix\aaa\bbbb219\temp\plus

请问大神们如何用bat 的if语句把上面的带temp的路径过滤掉
D:\batsix\aaa\bbbb218\temp\plus
D:\batsix\aaa\bbbb219\temp\plus

过滤后只留下面的两个路径就可以了
D:\batsix\aaa\bbbb218\plus
D:\batsix\aaa\bbbb219\plus

多谢了。

补充一下有其他的更好方法解决也可以哦
发表于 2021-9-29 20:31:01 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-9-29 20:32 编辑

如果是在for循环中for+dir \b \s \ad中的话:
for /f ... in ('dir \b \s \ad^|findstr /vr "temp"') do ...

评分

参与人数 1技术 +1 收起 理由
2565549687 + 1 感谢大神指点,原来可以用findstr过滤

查看全部评分

 楼主| 发表于 2021-9-29 20:50:22 | 显示全部楼层
本帖最后由 2565549687 于 2021-9-29 20:54 编辑

回复 2# qixiaobin0715
  1. dir \b \s \ad^|findstr /vr "temp"
复制代码
我只运行这一段代码就报错了
无效开关 - "vr"。

这段代码有问题吧?

下面的结果的查找plus文件夹后得到的结果

D:\batsix\aaa\bbbb218\plus
D:\batsix\aaa\bbbb218\temp\plus
D:\batsix\aaa\bbbb219\plus
D:\batsix\aaa\bbbb219\temp\plus
发表于 2021-9-29 20:54:44 | 显示全部楼层
回复 3# 2565549687
在这里|不需要转义,单引号里面才需要。
dir \b \s \ad|findstr /vr "temp"
 楼主| 发表于 2021-9-29 21:06:55 | 显示全部楼层
本帖最后由 2565549687 于 2021-9-29 21:08 编辑

回复 4# qixiaobin0715
  1.     for /f "delims=" %%i in ('dir /b /s /a:d plus^|findstr /vr "temp"') do (
  2.        
  3.        
  4.         echo %%i

  5. )
复制代码
是单引号里面就需要转义吧?
感谢大神。最终我把我想要的代码调试出来了。
发表于 2021-9-29 21:12:26 | 显示全部楼层
回复 5# 2565549687


不需要for命令吧,直接执行一句:
  1. dir /b /s /ad plus | findstr /v /r "temp"
复制代码
发表于 2021-9-29 21:28:24 | 显示全部楼层
回复 5# 2565549687
实际上这样还是有问题的,比如当前文件夹下有一个plus文件夹的话,会出问题,可以试试看。
 楼主| 发表于 2021-11-12 00:01:28 | 显示全部楼层
回复 7# qixiaobin0715


    是的还得加个过滤把其余的情况过滤掉的
发表于 2021-11-12 09:10:20 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-11-12 09:12 编辑

回复 8# 2565549687
以前碰到过这个问题,当时解决的办法是先dir指定目录下所有文件夹,再通过管道findstr过滤需要查找的文件夹:
  1. dir /b /s /ad | findstr /r "\\plus$" | findstr /v /r "\\temp\"
复制代码
但是这样效率低。下面代码可能效率要高一些,但是觉得还不是太理想,期待高手来解决:
  1. dir /b /s /ad plus? | findstr /r "plus$" | findstr /v /r "\\temp\"
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 00:06 , Processed in 0.029684 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表