标题: [文件操作] [已解决]请问批处理if用法:带temp的路径过滤掉 [打印本页]
作者: 2565549687 时间: 2021-9-29 20:04 标题: [已解决]请问批处理if用法:带temp的路径过滤掉
下面的结果的查找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 - 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 - for /f "delims=" %%i in ('dir /b /s /a:d plus^|findstr /vr "temp"') do (
-
-
- echo %%i
-
- )
复制代码
是单引号里面就需要转义吧?
感谢大神。最终我把我想要的代码调试出来了。
作者: Batcher 时间: 2021-9-29 21:12
回复 5# 2565549687
不需要for命令吧,直接执行一句:- 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过滤需要查找的文件夹:- dir /b /s /ad | findstr /r "\\plus$" | findstr /v /r "\\temp\\"
复制代码
但是这样效率低。下面代码可能效率要高一些,但是觉得还不是太理想,期待高手来解决:- dir /b /s /ad plus? | findstr /r "plus$" | findstr /v /r "\\temp\\"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |