我正在尝试对以下文件列表进行排序
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00010-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00011-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00012-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00013-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00014-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00015-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00016-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0001-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0002-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0003-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0004-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0005-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0006-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0007-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0008-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0009-R.xml
你可以看到从10,11,12开始.....然后回到1.
我如何按正确的顺序对它们进行排序?
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0001-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0002-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0003-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0004-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0005-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0006-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0007-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0008-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0009-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00010-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00011-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00012-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00013-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00014-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00015-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00016-R.xml
我可以使用批处理文件甚至是简单的代码。
谢谢。
编辑:
我使用以下命令阅读文件
echo off
for /r %%a in (*.xml) do echo %%a >> get_files.txt
答案 0 :(得分:2)
只需在cmd
提示符下使用批量oneliner:
for /f "tokens=1*" %x in ('(for %a in ("C:\DOCUMENTS\FLUX Melange\MultiXml\*.xml"^) do @for /f "tokens=3 delims=-" %b in ("%~na"^) do @for /f "tokens=* delims=0" %c in ("%~b"^) do @set "sorty=000%c"^&call set "sorty=%sorty:~-4%"^&call echo %sorty% %a^)^|sort') do @echo %y
注意:这可能不适用于XP,仍未经过测试。
答案 1 :(得分:1)
第一个列表按字典顺序排序。
您可以在文件[1..9]
中再添加一个零吗?
使用cmd
,dir /O
将按字典顺序对文件进行排序。
答案 2 :(得分:1)
你走了! (仅适用于Linux)
sort -t $'-' -k3 -n file.txt
输出:
# sort -t $'-' -k3 -n file.txt
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0001-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0002-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0003-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0004-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0005-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0006-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0007-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0008-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-0009-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00010-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00011-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00012-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00013-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00014-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00015-R.xml
C:\DOCUMENTS\FLUX Melange\MultiXml\ACC-BANQUE_76401-00016-R.xml
保存文件(使用>
重定向输出)
sort -t $'-' -k3 -n file.txt > new_formated_file
答案 3 :(得分:1)
此批次将创建files.tx0
(包含##### filename
),然后files.tx1
(有序files.tx0
),然后从files.tx1
到{{ 1}}:
files.txt
答案 4 :(得分:1)
其他答案排序名称列表;这意味着每次要按顺序排序文件时都必须运行程序。 下面的批处理程序重命名文件,因此您必须只运行一次,然后无论您如何访问它们,文件都会显示为已排序。
@echo off
setlocal EnableDelayedExpansion
for /F "tokens=1-4 delims=-" %%a in ('dir /B /S /A-D *.xml') do (
set number=%%c
if "!number:~4!" equ "" (
set pth=%%a
ren "%%a-%%b-%%c-%%d" "!pth:~-3!-%%b-0%%c-%%d"
)
)