[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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

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

盼望高手帮忙解决,衷心感谢!!

  1. copy /b CCC_222_B.txt+CCC_222_A.txt CCC_222.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


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

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

衷心感谢

TOP

本帖最后由 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

评分人数

TOP

回复 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

TOP

回复 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-]

衷心感谢

TOP

回复 4# ivor


   合并完 文档format 是 UTF-16 LE,可否让其保持原来的 UTB-8呢?
   
   衷心感谢

TOP

  1. Out-File (([regex]::Match($name[0].BaseName,'[0-9a-zA-Z]*_[0-9a-zA-Z]*')).Value+'.txt') -Encoding utf8
复制代码

TOP

回复 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')"

由衷的感谢

TOP

回复 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

衷心感谢

TOP

返回列表