批处理:如何按扩展对输出进行排序

时间:2021-03-05 15:14:24

标签: batch-file command

我在输出应该是按名称排序的扩展文件列表的位置进行了连接。拖到批处理中的源是一个包含子文件夹的文件夹。

我得到的是:

.mp3
.txt
.mp3
.mp3
.txt
.docx
.txt
.docx

我想要的是:

.docx
.docx
.docx
.mp3
.mp3
.mp3
.txt
.txt
.txt

当前代码:

@echo off
chcp 1252 > nul
pushd "%~1"
for /f "Delims=" %%a in ('"for /f "Delims^=" %%b in ('dir /b /s /a-d') do @echo %%~xb"') do echo %%a
pause

我需要的只是按名称对输出进行排序,但如果我尝试排序命令它不起作用:

@echo off
chcp 1252 > nul
pushd "%~1"
for /f "Delims=" %%a in ('"for /f "Delims^=" %%b in ('dir /b /s /a-d') do @echo %%~xb |sort"') do echo %%a
pause

如果可能,我不想使用文本文件。

1 个答案:

答案 0 :(得分:1)

你已经非常接近你目前拥有的东西,你只是缺少 dir/o 标志来对输出进行排序,结合 e 选项进行排序延期。如果你把所有的东西都放在一个代码块中,你就可以在整个命令完成后对它的输出进行排序。

@echo off

chcp 1252 >nul
(
    for /f "delims=" %%A in ('dir /b /s /a:-d /o:e "%~1"') do @echo %%~xA
) | sort

pause
相关问题