![如何从字符串搜索中排除文件夹](https://linux22.com/image/1508783/%E5%A6%82%E4%BD%95%E4%BB%8E%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%90%9C%E7%B4%A2%E4%B8%AD%E6%8E%92%E9%99%A4%E6%96%87%E4%BB%B6%E5%A4%B9.png)
>>"results\txtmail.txt" findstr /i /p /s mail %userprofile%\*.txt
现在,如果我想从搜索中排除 C:\Users\Username\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5 怎么办?
答案1
在发现findstr
忽略隐藏位并无论如何都找到隐藏文件夹中的文件后,我使用该for
命令(确实尊重它)得出了以下内容,并设置为批处理文件:-
@echo off
pushd %userprofile%
for /r %%f in (*.txt) do echo %%f | findstr "\Temporary" >NUL: || findstr /i /p mail "%%f" nul:
popd
笔记:-
- 当我在文件匹配中添加目录路径时,我无法开始
for /r
工作,因此使用pushd
/popd
。 - 第一个在文件路径中
findstr
查找(这可以详细说明),如果未找到则执行第二个。\Temporary
findstr
nul:
第二个额外的参数findstr
确保使用找到的字符串打印文件名:当只传递一个文件时通常会省略它(可能有另一种方法可以做到这一点,但我并不经常使用此命令)。- 如果您经常这样做,您可能需要考虑将互联网缓存移动到用户配置文件之外的另一个目录。
当我查看这个解决方案时,David Postill 的评论出现在上方。我刚刚才注意到它,但无论如何我都会提交我的答案,因为它增加了任何解决方案中都需要考虑的几点。