Search 使用批处理脚本搜索和排序目录和子目录
我一直在尝试在一所小学的用户目录和子目录中搜索所有应用程序、音乐、视频和存档文件,以检查孩子们对我隐瞒了什么。我一直在使用与此类似的基本dir脚本:Search 使用批处理脚本搜索和排序目录和子目录,search,sorting,batch-file,Search,Sorting,Batch File,我一直在尝试在一所小学的用户目录和子目录中搜索所有应用程序、音乐、视频和存档文件,以检查孩子们对我隐瞒了什么。我一直在使用与此类似的基本dir脚本: dir C:\Sample\*.exe, C:\Sample\*.rar, C:\Sample\*.mp3 /s /b /OE > D:\Result.txt 这为我提供了按用户名排序的这些类型的所有文件的输出 我想知道的是,有没有一种简单的方法可以将搜索更改为按类型排序,或者在以后使用sort命令按文件的最后一个字符排序 输出样本: U
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等运行良好。不过,如果有任何建议,我将非常高兴。给你
for %%x in (exe,mp3) do (
for /r C:\Dir %%a in (*.%%x) do echo %%a >>D:\Results.txt
)
在不使用/S选项的情况下运行DIR/O sort选项可以正常工作。但是当您使用/S选项时,它会对每个目录中的结果进行单独排序,而您希望对整个结果集进行排序 Balic的编辑答案通过单独执行多个搜索来解决问题,每个文件扩展名一个搜索。他选择使用FOR命令来迭代文件并回显结果。我相信只使用多个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
)
对于任何感兴趣的人来说,我的初始解决方案(因为没有循环,所以需要更多的输入)如下所示:
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
等
需要进行更多的设置工作,这是一个两步过程。这个解决方案看起来也不像我看到的任何一个选项那么优雅。谢谢你的帮助。基本上我希望它扩展显示,这样我提供的示例将显示为:
U:\ageeg2\My Documents\install\U flashplayer11x32ax\U gtbp\U chra\U aih.exe
U:\adwan4\My Documents\My Videos\PhotoStory1.wmv
U:\amcka55\My Documents\My Music\Angus.wmv
类似的内容OK,你想按扩展名排序吗?就像显示所有的exe,然后是所有的mp3等等,这正是我想要做的,抱歉搞混了。谢谢澄清:)试试我的脚本,它应该能做到。我试过了,它仍然按目录排序。运行它后,前6个是前6个,然后是一些MP3,然后是更多的前6个等等。非常感谢。我真的很感谢你的帮助,我目前正在通过试错学习一些bat脚本。我主要担心的是,由于脚本不是针对C:\Sample(这只是为了测试它),而是针对服务器上的用户目录,因此运行多个dir命令可能需要相当长的时间。我没有意识到批处理脚本实际上有多灵活。+1用于自己动手,有时是一件罕见的事情:)