如何使用.bat(cmd)搜索所有用户的文件夹并列出在输出文本文件中找到的文件(带扩展名),而不包括AppData
文件夹中的数据?
假设我有用户Jenny
和用户Tommy
。当然,在这些用户中有desktop
、documents
、videos
等文件夹。
如何创建CMD(或PowerShell)脚本来搜索每个用户的文件夹,如desktop
、documents
、videos
等,但是阻止脚本提取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只是将文本文档保存到桌面上的特定文件中