文件夹和子文件夹上的最新文件,整体上没有按文件夹传播

时间:2013-02-05 01:33:15

标签: dos command-prompt

我知道一些DOS,我可以做一些简单的事情但是无法找到或创建一些东西来搜索带有子文件夹的文件夹中的最近文件。

dir *.mp3 /b /o:d /s /t:c > Listing.txt

这很好,有一个问题,它列出了每个文件夹中的最近文件夹,而不是整个列表。我想要一个关于所有内容的最近文件的列表,有点像你按日期搜索时的窗口。

music  \Josh
       \Rafael

我所拥有的脚本将按照我的需要进行操作,但它会在每个文件夹上一个接一个地给我一个最新的文件,而不是作为一个整体,所以让我这样说:

Music\file 1.mp3
Music\file 2.mp3
Music\Josh\file24.mp3
Music\Josh\file50.mp3
Music\Rafael\test1.mp3
Music\Rafael\test56.mp3

我想要的是最近的文件,不管文件夹,有点像这样

file 1.mp3
file24.mp3
test1.mp3
file 2.mp3
file50.mp3
test56.mp3

圣拉斐尔

2 个答案:

答案 0 :(得分:0)

如果您需要按日期和时间排序的文件,可以使用如下批处理文件:

@echo off
setlocal
for /f "tokens=1,2,3,4,*" %%f in ('dir /s') do call :eachfile %%f %%g %%h "%%i" "%%j"
exit /b

:eachfile
set dt=%1
set tm=%2
if "%dt%"=="Directory" exit /b
if "%dt%"=="Volume" exit /b
if "%tm%"=="File(s)" exit /b
if "%tm%"=="Dir(s)" exit /b
if "%dt%"=="Total" exit /b
if "%~4"=="<DIR>" exit /b
echo %dt:~6,4%/%dt:~0,5% %3 %tm% %~5
exit /b

将其保存到例如dirflat.bat,然后就可以运行

dirflat | sort

按顺序获取文件列表。如果您不在美国,则可能需要调整批处理文件的倒数第二行以正确切割和拼接目录列表。对我而言,转向:

06/14/2011 10:40 AM "209,920" "sed.exe"

进入

2011/06/14 AM 10:40 sed.exe

可以轻松排序。然后,您可以通过另一个阶段发送输出,以从字符串的开头剥离时间。

答案 1 :(得分:0)

试试这个

For /r %I in (*.mp3) do @echo %~nxI

要在结果中包含日期,请执行此操作

For /r %I in (*.mp3) do @echo %~nxtI

对于不同的修饰符,请参阅this url