批处理:如何按扩展名对输出进行排序
Batch: How to sort the output by Extension
我为输出应该是按名称排序的扩展文件列表的位置进行了串联。拖到批处理的源是一个包含子文件夹的文件夹。
我得到的是:
.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
如果可能我不想使用文本文件。
您已经非常接近当前所拥有的,您只是缺少 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
我为输出应该是按名称排序的扩展文件列表的位置进行了串联。拖到批处理的源是一个包含子文件夹的文件夹。
我得到的是:
.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
如果可能我不想使用文本文件。
您已经非常接近当前所拥有的,您只是缺少 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