2013-02-05 1 views
1

Я знаю некоторые из DOS, я могу делать простые вещи, но havent смог найти или создать что-то для поиска последних файлов в папке с sub -folders.Самые последние файлы в папках и подпапках, в целом не распространяемые по папкам

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 

Рафаэль

+0

Попробуйте 'Для/г% I в (* .mp3) do @echo% ~ nxI' –

+0

Человек очень благодарит, что отлично работает именно то, что я искал! – user2041510

+0

Теперь есть способ добавить даты рядом с именами файлов? : D – user2041510

ответ

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 

, которые могут быть легко отсортирован. Затем вы можете отправить результат через другой этап, чтобы удалить время с начала строки.

+0

David O'Riva благодарит так много, что вы перешли на другой уровень, и он отлично работает. большое спасибо! – user2041510

0

Попробуйте

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

Чтобы включить дату в результате сделать это

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

Для различных модификаторов см this url