Board logo

标题: [文本处理] 批处理如何把txt按指定行数合并行内容? [打印本页]

作者: 2359123467    时间: 2021-4-3 12:46     标题: 批处理如何把txt按指定行数合并行内容?

a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
0
1
2
3
4
5
6
7
8
9
好比设置按12行合并一行
执行后
abcdefghijkl
mnopqrstuvwx
yz0123456789

如何写批处理?求救

xt内容类似如下 如何每个12行 合并成一行

23.32万,30.58万,27.41万,30.80万,24.39万,
24.89万,27.82万,29.42万,28.14万,26.41万,
27.67万,31.08万,27.49万,39.78万,34.81万,
36.38万,43.17万,91.96万,36.87万,35.39万,
59.06万,54.40万,42.62万,43.96万,59.22万,
53.80万,60.44万,71.37万,63.84万,120.03万,
89.56万,64.66万,62.87万,103.56万,83.85万,
65.50万,72.78万,90.40万,148.66万,187.42万,
114.51万,117.47万,204.72万,108.44万,123.45万,
133.19万,93.07万,69.86万,80.81万,119.65万,
131.75万,159.29万,321.43万,169.94万,408.87万,
57.12万,64.33万,115.59万,
21.08万,25.59万,23.65万,33.37万,53.86万,
37.40万,26.60万,26.52万,29.97万,36.75万,
51.09万,134.85万,21.81万,22.78万,31.41万,
35.72万,64.70万,52.48万,35.92万,20.23万,
23.21万,21.46万,27.75万,32.71万,26.24万,
28.99万,31.76万,41.50万,36.59万,35.72万,
19.83万,22.11万,22.72万,25.21万,43.35万,
35.07万,59.97万,29.84万,49.34万,50.26万,
58.98万,23.58万,23.69万,24.66万,33.71万,
23.51万,45.11万,27.22万,27.96万,35.76万,
26.43万,28.69万,27.63万,41.26万,41.21万,
24.80万,25.42万,28.61万,
70.48万,82.63万,75.87万,79.91万,93.56万,
88.44万,62.86万,72.70万,80.91万,114.31万,
69.90万,65.34万,68.90万,77.42万,73.18万,
74.68万,101.61万,121.51万,89.97万,67.15万,
91.12万,93.12万,124.13万,140.89万,124.86万,

再开一贴 昨天以为解决了 没搞好 有没有大神帮个忙啊 急急 在线等
作者: qixiaobin0715    时间: 2021-4-3 13:17

本帖最后由 qixiaobin0715 于 2021-4-3 13:50 编辑

回复 1# 2359123467
写一个不太成熟的代码吧,凑合能使:
  1. @echo off
  2. set n=0
  3. setlocal enabledelayedexpansion
  4. (for /f "delims=" %%a in (test.txt) do (
  5.     set /a n+=1
  6.     if !n! leq 12 (
  7.         set str=!str!%%a
  8.     ) else (
  9.         echo,!str!
  10.         set str=%%a
  11.         set n=1
  12.     )
  13. )
  14. echo,!str!)>a.txt
  15. pause
复制代码

作者: 2359123467    时间: 2021-4-3 13:21

回复 2# qixiaobin0715


    执行后 test.txt还是原样
作者: qixiaobin0715    时间: 2021-4-3 13:51

回复 3# 2359123467
已修改
作者: 2359123467    时间: 2021-4-3 13:56

回复 4# qixiaobin0715


   万分感谢!
作者: Batcher    时间: 2021-4-3 21:00

回复 2# qixiaobin0715


这里有个比较简洁的方法:
http://bbs.bathome.net/thread-11360-1-1.html#pid72212
作者: Batcher    时间: 2021-4-3 21:05

回复 1# 2359123467


http://bcn.bathome.net/s/tool/index.html?key=gawk
下载 gawk.exe 和下面的 test.bat 脚本以及你的txt文件放在同一个目录下:
  1. @echo off
  2. gawk "NR%%12{printf $0;next}1" "a.txt" > "b.txt"
复制代码
双击执行 test.bat
作者: qixiaobin0715    时间: 2021-4-4 09:15

本帖最后由 qixiaobin0715 于 2021-4-4 11:09 编辑

回复 6# Batcher
见识了,原来set /p可以这样玩。谢谢!
应当和你的帖子http://www.bathome.net/viewthrea ... &from=favorites的用法相仿。
作者: qixiaobin0715    时间: 2021-4-4 17:36

仔细想了想,好像觉得两者差距很大。前者给变量没有赋值(<nul),后者是将文本文件(.log)中的各行依次赋给变量。但是前者如果没有赋值,又如何实现拼接的呢?




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2