按批处理合并文件时的枚举



我有一批将一些文件合并到一个名为all.txt的文件中。批处理代码还可以,但我想要的是按数字顺序连接文件内容。目前,该命令将按此顺序开始合并文件。

1.txt
2.txt
3.txt
100,001.txt
3000.txt

我想要的是按数字顺序将001.txt合并到100,001.txt

1.txt
2.txt
3.txt
3000.txt
100,001.txt

这是我当前的代码:

(for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
type "%%~a"
echo(
)
)>all.txt

根据 Magoo 2014 年的回答,林克在下面粘贴了他的答案评论。 这会获取文件并向它们添加一个数字并将其写入临时文件,然后按数字对临时文件进行排序,并按该顺序扣除和读取金额。

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a IN ('dir /b /a-d *.txt') DO (
set /a "seq=1000000000+%%~na"
echo !seq!) 
)>"%temp%tempfile"
for /f %%a IN ('sort "%temp%tempfile"') DO (
set /a "seq=%%a-1000000000"
type !seq!.txt
echo(
)>> all.log

这将按顺序写入文件: 001.txt 002.txt 3000.txt 100001.txt

请注意以下事项!我将输出文件命名为all.log.原因是您正在读取所有文本文件,如果您将其命名为all.txt它也将被读取。

此外,如果目录中存在任何其他未以数字命名的文件,它将尝试执行相同的计算。此计算仅适用于以数字命名的文件。

你确定要按字母顺序排列吗?

'dir /b /a-d /on *.txt'

应该这样做 - 但它是 NTFS 上的默认设置,因此除非您从 FAT 驱动器获取文件,否则它们按随机顺序排列,否则您应该按字母顺序排列文件而无需修改。

说的alphabetically是什么意思?

最新更新