使用批处理脚本搜索和排序目录及其子目录

3

我一直在尝试搜索小学用户目录及其子目录中的所有应用程序、音乐、视频和归档文件,以检查孩子们对我隐藏了什么。我一直在使用类似于以下基本dir脚本:

dir C:\Sample\*.exe, C:\Sample\*.rar, C:\Sample\*.mp3  /s /b /OE > D:\Result.txt

这为我提供了按用户名排序的所有这些类型文件的输出。
我想知道的是,是否有一种简单的方法可以将搜索更改为按类型排序,或者在之后使用sort命令按文件的最后一个字符/字符集进行排序。
输出示例:
U:\adwan4\My Documents\My Videos\PhotoStory1.wmv
U:\ageeg2\My Documents\install_flashplayer11x32ax_gtbp_chra_aih.exe
U:\amcka55\My Documents\My Music\Angus.wmv

我想到了一种使用类似于“查找”功能的方法来解决问题:

Find ".exe" D:\Result.txt >>D:\Sorted.txt

这对于avi,exe等文件似乎可以正常工作。但是我非常希望得到任何建议。

3个回答

1

给你

for %%x in (exe,mp3) do (
for /r C:\Dir %%a in (*.%%x) do echo %%a >>D:\Results.txt
)

基本上我希望它按扩展名显示,这样我提供的示例将显示为:`U:\ageeg2\我的文档\install_flashplayer11x32ax_gtbp_chra_aih.exe` `U:\adwan4\我的文档\我的视频\PhotoStory1.wmv` `U:\amcka55\我的文档\我的音乐\Angus.wmv`类似这样 - user1773475
是的,那正是我想要做的,抱歉让你感到困惑。 - user1773475
啊,对不起,我只是在一个目录上进行测试,所以我的测试让我认为它正在工作,等一下,我会更新我的答案。 - Bali C
我已更新我的答案,只需标记任何需要添加的扩展名,用逗号分隔,并记得重命名或删除旧的结果文件,因为它会在进行时追加,所以如果已经存在,则会将结果添加到其底部。 - Bali C
谢谢,这使得它的工作非常好。这比我的解决方案更加优雅。 - user1773475
显示剩余3条评论

1

对于任何感兴趣的人,我的初始解决方案(因为它没有循环而需要更多的打字)看起来像这样:

ECHO Off
dir U:\*.exe, U:\*.rar, U:\*.mp3  /s /b > D:\Result.txt
Echo Applications > D:\Sorted.txt
Echo --------------------------- >>D:\Sorted.txt
Find ".exe" D:\Result.txt >>D:\Sorted.txt
Echo Music >> D:\Sorted.txt
Echo --------------------------- >>D:\Sorted.txt
Find ".mp3" D:\Result.txt >>D:\Sorted.txt
Echo --------------------------- >>D:\Sorted.txt
Find ".wma" D:\Result.txt >>D:\Sorted.txt

等等

设置需要更多的工作,是一个两步过程。解决方案看起来也不像我提出的任何一个选项那么优雅。感谢您的帮助。


+1 鼓励你自己尝试解决问题,这在 Stack Overflow 上有时是一件罕见的事情 :) - Bali C

0
DIR /O 排序选项在没有 /S 选项的情况下运行正常。但是当使用 /S 选项时,它会在每个目录中单独排序结果,而您需要对整个结果集进行排序。
Bali C 的修改答案通过逐个执行多个搜索(每个文件扩展名一个)来解决问题。他选择使用 FOR 命令迭代文件并 ECHO 结果。我认为更简单的方法是只使用多个 DIR 命令。
>d:result.txt (
  dir /s /b C:\Sample\*.exe
  dir /s /b C:\Sample\*.rar
  dir /s /b C:\Sample\*.mp3
)

或者,也许可以少打一些字

>d:result.txt (
  for %%X in (exe rar mp3) do dir /s /b C:\Sample\*.%%X
)

我对此的主要担忧是,由于脚本并不针对C:\Sample(那只是为了测试),而是针对运行多个dir命令的服务器上的用户目录,因此可能需要相当长的时间才能运行。我没有意识到批处理脚本实际上有多灵活。 - user1773475

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接