找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29146|回复: 9

[文本处理] [已解决]求批处理在两个问本合并加名称合并

[复制链接]
发表于 2019-10-10 09:08:01 | 显示全部楼层 |阅读模式
本帖最后由 jrx401 于 2019-10-10 14:06 编辑

详细如下;
B文本内容;
CCC_222_B.txt
AAAAA
BBBBB
GGGG

A文本内容(空格间隔);
CCC_222_A.txt
AAAAA 1
BBBBB 2
FFFFFF 3

执行后;
CCC_222.txt or CCC_222_AB.txt
AAAAA
BBBBB
GGGG
AAAAA 1
BBBBB 2
FFFFFF 3

可否有快速处理的方法呢?

盼望高手帮忙解决,衷心感谢!!
发表于 2019-10-10 09:34:35 | 显示全部楼层
  1. copy /b CCC_222_B.txt+CCC_222_A.txt CCC_222.txt
复制代码
 楼主| 发表于 2019-10-10 09:55:24 | 显示全部楼层
回复 2# Batcher


    感谢回复。
不好意思,没有说明清楚。

CCC_222_B.txt 与 CCC_222_A.txt 的名称里,CCC_222是不确定。
所以想用 *B.txt , *A.txt来抓。

衷心感谢
发表于 2019-10-10 10:37:02 | 显示全部楼层
本帖最后由 ivor 于 2019-10-10 13:02 编辑
  1. powershell "($name = dir '*[B|A].txt') | Get-Content | Out-File ($name.Name -join '')"
复制代码
修改后:
  1. powershell "($name = dir '*[B|A].txt') | Get-Content | Out-File (([regex]::Match($name[0].BaseName,'[0-9a-zA-Z]*_[0-9a-zA-Z]*')).Value+'.txt')"
复制代码

评分

参与人数 1技术 +1 收起 理由
jrx401 + 1 乐于助人

查看全部评分

 楼主| 发表于 2019-10-10 12:16:08 | 显示全部楼层
回复 4# ivor


    感谢大侠。
1,文件名变成如下,可否变成CCC_222.txt?
   或CCC_222_AB.txt
执行结果;
CCC_222_A.txtCCC_222_B.txt

2, 内容合并OK
AAAAA 1
BBBBB 2
FFFFFF 3
AAAAA
BBBBB
GGGG
 楼主| 发表于 2019-10-10 14:04:41 | 显示全部楼层
回复 4# ivor

    感谢大虾,如下改良后 文件名称里面有 - 也可以了。
   
     稍微改良如下;
    powershell "($name = dir '*[B|A].txt') | Get-Content | Out-File (([regex]::Match($name[0].BaseName,'[0-9a-zA-Z-]*_[0-9a-zA-Z-]*')).Value+'.txt')"
    改良部分;
         [0-9a-zA-Z]-> [0-9a-zA-Z-]
       [0-9a-zA-Z]-> [0-9a-zA-Z-]

衷心感谢
 楼主| 发表于 2019-10-10 14:35:34 | 显示全部楼层
回复 4# ivor


   合并完 文档format 是 UTF-16 LE,可否让其保持原来的 UTB-8呢?
   
   衷心感谢
发表于 2019-10-10 14:55:47 | 显示全部楼层
  1. Out-File (([regex]::Match($name[0].BaseName,'[0-9a-zA-Z]*_[0-9a-zA-Z]*')).Value+'.txt') -Encoding utf8
复制代码
 楼主| 发表于 2019-10-10 15:15:20 | 显示全部楼层
回复 8# ivor


    感谢回复
刚才我这边测试如下,也OK了。
powershell "($name = dir '*[B|A].txt') | Get-Content | Out-File -Encoding UTF8(([regex]::Match($name[0].BaseName,'[0-9a-zA-Z-]*_[0-9a-zA-Z-]*')).Value+'.txt')"

由衷的感谢
 楼主| 发表于 2019-10-12 18:12:53 | 显示全部楼层
回复 8# ivor

感谢回复。
试着用bat来写,发现如下也颗。
set time=o
set time2=0
for /f %%C in ('dir /b /a-d *.txt') do (
    set /a time2=!time!+1
    copy /b  *A.txt+ *B.txt %%~nC.txt>nul
    if !time2! == 1 (goto:ren)
)
:ren
ren *A.txt *AB.txt

衷心感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 11:26 , Processed in 0.021081 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表