按数字排序文本文件的内容

Gab*_*bil 3 windows vbscript batch-file

我有一个文本文件,其中包含以下数据:

12,abcd

2541,sdfrhk

4,qwerty

13,yytrew

345,iuoiyt

如何按数字降序对内容进行排序?最好使用批处理。谢谢

dbe*_*ham 5

您无法直接对其进行排序。我能想到的唯一批处理解决方案是解析并重新创建每行,这些行的前缀为零,以固定宽度表示。一旦数字具有固定的宽度,就可以使用SORT创建新的排序文件,然后再使用FOR / F删除前导零。

我假设15位数字足以容纳最大的数字。此解决方案假定所有数字都是大于0的整数。

@echo off
set "file=test.txt"
>"%file%.new1" (
  for /f "usebackq tokens=1* delims=," %%A in ("%file%") do (
    set "n=000000000000000%%A"
    set "str=%%B"
    setlocal enableDelayedExpansion
    echo !n:~-15!,!str!
    endlocal
  )
)
>"%file%.new2" sort /r "%file%.new1"
>"%file%" (
  for /f "usebackq tokens=* delims=0" %%A in ("%file%.new2") do echo %%A
)
del "%file%.new?"
Run Code Online (Sandbox Code Playgroud)

如果原始文件中的值为0,则必须在最后一步中完成其他工作。如果允许使用负数,则必须在整个脚本中完成更多工作。

您可以使用VBScript或JavaScript编写效率更高的脚本。