首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过批处理合并文件时的

通过批处理合并文件时的
EN

Stack Overflow用户
提问于 2017-05-31 12:59:28
回答 2查看 137关注 0票数 0

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

代码语言:javascript
运行
复制
1.txt
2.txt
3.txt
100,001.txt
3000.txt

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

代码语言:javascript
运行
复制
 1.txt
 2.txt
 3.txt
 3000.txt
 100,001.txt

这是我目前的代码:

代码语言:javascript
运行
复制
(for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
    type "%%~a"
    echo(
  )
)>all.txt
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-31 13:18:02

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

代码语言:javascript
运行
复制
@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,它也将被读取。

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

票数 1
EN

Stack Overflow用户

发布于 2017-05-31 13:24:25

你确定要按字母顺序吗?

代码语言:javascript
运行
复制
'dir /b /a-d /on *.txt'

应该这样做--但这是NTFS的默认设置,所以除非您是从FAT驱动器中获取文件,否则文件的顺序应该是随机的,您应该按照字母顺序排列文件,而不进行修改。

YOU指的是alphabetically

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44285522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档