如何搜索用户文件夹,同时避免使用DIR挖掘得太深



如何使用.bat(cmd)搜索所有用户的文件夹并列出在输出文本文件中找到的文件(带扩展名),而不包括AppData文件夹中的数据?

假设我有用户Jenny和用户Tommy。当然,在这些用户中有desktopdocumentsvideos等文件夹。

如何创建CMD(或PowerShell)脚本来搜索每个用户的文件夹,如desktopdocumentsvideos等,但是阻止脚本提取AppData文件夹中的结果。

我试图用这个代码来搜索每个用户,但结果被每个用户AppData文件夹中的内容所削弱。

我使用%~dp0Files.txt将结果导出到执行.bat的桌面。

cd..
cd..
cd Users
dir /s /p /b >> %~dp0Files.txt
pause

我很感激你的建议。即使有不同的脚本文件更适合用于此任务。

您可以使用命令行:

dir "%USERPROFILE%..*" /A-D /B /S | %SystemRoot%System32findstr.exe /I /L /V /C:"\AppData\" >"%USERPROFILE%DesktopFiles.txt"

命令DIR搜索

当前用户配置文件目录的父目录中的
  • 在Windows Vista和更高版本上通常是C:Users
  • 由于/A-D(不是属性目录),仅用于文件
  • 由于/S
  • 以裸格式列出它们,因为/B意味着只有完整路径的文件名

此输出被重定向到FINDSTR,在行中搜索

  • 不区分大小写,因为/I
  • 因为/L
  • 对于字符串AppData
  • 并输出由于CCD_ 20而不包含该字符串的所有行(inVerted result)

反斜杠字符是搜索字符串中的转义字符
因此,要查找的每个反斜杠都必须用一个反斜杠进行转义。

通过在FINDSTR命令行上使用多个/C:"..."参数,可以指定多个OR组合的搜索字符串。因此可以很容易地过滤出更多的子目录。

FINDSTR的过滤输出被重定向到当前用户桌面上的文件Files.txt中,每次执行此命令行时总是新建。

为了理解这两个使用的命令及其工作方式,请打开一个命令提示符窗口,在那里执行以下命令,并仔细阅读为每个命令显示的全部帮助。

  • dir /?
  • findstr /?

阅读维基百科上关于Windows环境变量的文章。

多亏了Mofi的帮助,我还为All Users文件夹添加了一个排除项,这也降低了结果。

我的最终编码是:

:ScanUsers
@echo off
cls
ECHO Searching users' files
dir "%USERPROFILE%..*" /A-D /B /S | %SystemRoot%System32findstr.exe /I /L /V /C:"\AppData\" >"%~dp0OutputFilesSearch.txt"
start "%~dp0OutputFilesSearch.txt"
wscript.exe "%~dp0ExtraHere is a list of files.vbs"
Timeout 2
goto start

%~dp0Output只是将文本文档保存到桌面上的特定文件中

最新更新