Board logo

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

作者: 2565549687    时间: 2021-9-29 20:04     标题: [已解决]请问批处理if用法:带temp的路径过滤掉

下面的结果的查找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

多谢了。

补充一下有其他的更好方法解决也可以哦
作者: qixiaobin0715    时间: 2021-9-29 20:31

本帖最后由 qixiaobin0715 于 2021-9-29 20:32 编辑

如果是在for循环中for+dir \b \s \ad中的话:
for /f ... in ('dir \b \s \ad^|findstr /vr "temp"') do ...
作者: 2565549687    时间: 2021-9-29 20:50

本帖最后由 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
作者: qixiaobin0715    时间: 2021-9-29 20:54

回复 3# 2565549687
在这里|不需要转义,单引号里面才需要。
dir \b \s \ad|findstr /vr "temp"
作者: 2565549687    时间: 2021-9-29 21:06

本帖最后由 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. echo %%i
  3. )
复制代码
是单引号里面就需要转义吧?
感谢大神。最终我把我想要的代码调试出来了。
作者: Batcher    时间: 2021-9-29 21:12

回复 5# 2565549687


不需要for命令吧,直接执行一句:
  1. dir /b /s /ad plus | findstr /v /r "temp"
复制代码

作者: qixiaobin0715    时间: 2021-9-29 21:28

回复 5# 2565549687
实际上这样还是有问题的,比如当前文件夹下有一个plus文件夹的话,会出问题,可以试试看。
作者: 2565549687    时间: 2021-11-12 00:01

回复 7# qixiaobin0715


    是的还得加个过滤把其余的情况过滤掉的
作者: qixiaobin0715    时间: 2021-11-12 09:10

本帖最后由 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\\"
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2