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

时间:2012-10-25 07:55:11

标签: search sorting batch-file

我一直在尝试搜索小学的用户目录和子目录,查找所有应用程序,音乐,视频和存档文件,以检查孩子们从我这里隐藏的内容。我一直在使用类似这样的基本目录脚本:

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的方法:

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

这似乎适用于avi,exe等。但是我会很高兴任何建议。

3 个答案:

答案 0 :(得分:1)

你去吧

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

答案 1 :(得分: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

要设置更多工作,这是一个两步过程。解决方案看起来并不像呈现给我的任何选项那样优雅。谢谢你的帮助。

答案 2 :(得分:0)

在没有/ S选项的情况下运行时,DIR / O排序选项可以正常工作。但是当您使用/ 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
)