我有一批将一些文件合并到一个名为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
是什么意思?