1

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

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

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

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

拉斐尔

4

2 回答 2

1

试试这个

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

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

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

对于不同的修饰符,请参考这个 url

于 2013-02-05T02:27:01.253 回答
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

将其保存到 eg dirflat.bat,然后您可以运行

dirflat | sort

按顺序获取文件列表。如果您不在美国,您可能需要调整批处理文件的倒数第二行以正确地剪切和拼接您的目录列表。对我来说,这就变成了:

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

进入

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

可以很容易地排序。然后,您可以将输出发送到另一个阶段,以去除字符串开头的时间。

于 2013-02-05T02:24:25.267 回答