我有一个批处理,它将一些文件合并到一个名为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
发布于 2017-05-31 13:18:02
根据Magoo 2014年的回答,Link在下面对他的回答发表了评论。这将获取文件,并向它们添加一个数字,并将其写入一个tempfile,然后对临时文件进行数字排序,并按该顺序扣除和读取数量。
@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
,它也将被读取。
此外,如果目录中存在没有数字命名的任何其他文件,则它将尝试进行相同的计算。此计算仅适用于以数字命名的文件。
发布于 2017-05-31 13:24:25
你确定要按字母顺序吗?
'dir /b /a-d /on *.txt'
应该这样做--但这是NTFS的默认设置,所以除非您是从FAT驱动器中获取文件,否则文件的顺序应该是随机的,您应该按照字母顺序排列文件,而不进行修改。
YOU指的是alphabetically
https://stackoverflow.com/questions/44285522
复制相似问题