Board logo

标题: [文本处理] 批处理如何将文本内容按指定字数分行(如15个字自动换行)? [打印本页]

作者: lianglidong    时间: 2019-12-13 12:25     标题: 批处理如何将文本内容按指定字数分行(如15个字自动换行)?

a.txt
例文:
的打斗场面令人震撼可谓招招见拳拳到肉记者倪自放囘力街区有望月上映保罗飙车神技将再现由基美影业与囯欧罗巴联合出品囯际著名导演吕克贝松身兼三职担纲监制制片编剧的动作电影囘力街区有望在今年月登陆囯内院线作为吕克贝松风靡全球的经典动作电影囘力区的升级版该片还是好莱坞巨星速度与激囘情系列主演保罗沃克最后一部完整遗囘作曰前该片 的打……
处理后效果:
的打斗场面令人震撼可谓招招见拳
拳到肉记者倪自放囘力街区有望月
上映保罗飙车神技将再现由基美影
业与囯欧罗巴联合出品囯际著名导
演吕克贝松身兼三职担纲监制制片
……
你哪位大神能够教教我,在此感激不尽了…

目录下有多个类似a.txt文件,现在需要把txt文件按固定字数进行自动换行,例如15个字进行自动换行。
作者: lianglidong    时间: 2019-12-13 12:26

换行完成生成新文件
作者: lianglidong    时间: 2019-12-13 14:21

1>1/* :Bat+JScript
@echo off
cscript -nologo -e:jscript "%~0" <a.txt >b.txt
pause & exit /b
*/

WSH.Echo(
        WSH.StdIn.ReadAll().replace(/.{15}/gm,"$&\r\n")
)这个是单独处理一个文件的,请教处理目录下的多个txt文件,怎么修改
作者: terse    时间: 2019-12-13 17:15

下面这样处理
  1. var fso = new ActiveXObject("Scripting.FileSystemObject");
  2. while (!WSH.StdIn.AtEndOfStream) {
  3.       var f= fso.OpenTextFile(WSH.StdIn.ReadLine());
  4.       var text = f.ReadAll().replace(/.{15}/gm,"$&\r\n")
  5.       f.Close();
  6.       WSH.Echo(text);
  7. }
复制代码

作者: lianglidong    时间: 2019-12-13 17:49

感谢楼上谢谢
作者: terse    时间: 2019-12-13 19:07

回复 5# lianglidong

cscript -nologo -e:jscript "%~0" 改为
  1. dir /b *.txt |cscript -nologo -e:jscript "%~0"
复制代码

作者: hqinghua    时间: 2022-11-29 17:45

回复 4# terse
如果我要指定不同长度怎么分行,例如我和一行要16个字,第二行可能在6个字换行,三个行可能又更多。以此推类
作者: pd1    时间: 2022-11-29 18:28

回复 7# hqinghua


    为啥不一次性说完呢
作者: qixiaobin0715    时间: 2022-11-30 08:20

本帖最后由 qixiaobin0715 于 2022-11-30 08:45 编辑

回复 7# hqinghua
这么没有规律性,直接在文本上修改不就可以了。
你应当把你的需求好好总结一下,把规律说清楚。
作者: hqinghua    时间: 2022-11-30 09:34

回复 8# pd1
你好,也就是想把如下1文本改成2文本那样,做个批处理,这样直接可以用,如果手动修改数据量太大了,有很多文件都是这样的
1.文本
5A56043E2530009DBF1084000002C804848000265A51B5AA6AD54A0140E00D82200800B40024420AE36D5B7041B44D2019E12600A180082006008500002C51A3020015263A4F636BA194CD6935764C4A3B2D1E11080015263A4F636BA194CD6935764C4A3B2D1E110800858000120000204408006047000010220400B023150086000030FE685882BE48E006006015005015565115556115006015005015565115556195AB18800080008000804C2984520109008680000EF0B171EF49C0801A0000000000008700000CFF8168AC226D24000000000087800017910B34002820650C5111E86003428C8C24698171447C148800001F000003E71F17207820D3D4183088418A3928A9C59A7BF5077EE0077E20100088800079457703408AF1FF431008C146A0802418300664C1802107C4E1D06840201D0448404028109070381A104703E2200014E0703800E0E50100280E06435555555555958888888888480906406080002000A143E800001200000220194110060000000092244992040000000092040085110C000040000000005E008900001900000000000000000000000000000000000000000000006400898000130100000C0000000001020101440CCEE77207008A0000809101405EE9EFF7FBFD7E000000F4C582CC2300000000009300E70AD80438B7C009FC7E010E00000000E88360904C0E00000000000000000000ACBEE82B0040A150380FF1668031006721DE0C3006E01CC49B01C6009C817833C018000000000000000000000000000000000000000000000000000000000000000000000000008A800080000000000000000000000000000000000000E81B000000000000000000000000000000000000000000000000000000000C00000001000080120000008DF2330C82100400D0340EB42C0C23490A2A3F00100482300C4DE340CB22490C83A8F2330C82100400D0340EB42C0C23490A2A3F00100482300C4DE340CB22490C8328008B0000160000000000000000000000000000000000000000C0408C00003FEFBDF7DE7BEFBD0708080A0C0C0C0C0C0C0C0C5C09A8AAAAAAAAAAAAAAAAAA5A59595959595959595959590904FF058080000420000108400002108000040F8C80002795938F8C808B8987868483830060F6FFFF2FF3EFFFBF0F0FAFB5710E6C4A6908000000000000008D0000800004080C001014181C002028303800404850580060687078008088909800A0A8B0B800C0C8D0D800E0E8F0F800FCFEFF000004080C001014181C002028303800404850580060687078008088909800A0A8B0B800C0C8D0D800E0E8F0F800FCFEFF000004080C001014181C0020283038004048505800606870780080889098008D800014A0A8B0B800C0C8D0D800E0E8F0F800FCFEFF000090000007A40000000000009100000D2DC40055555555555540551F009180001901050005000000000000000000000000FF0000002400000000920000100003009DBF100000000000000000302501FE
2.文本
0D E8 04 3E 83 75 00 9D BF 10

84 00 00 02
C8 00

84 80 00 26
5A 51 B5 AA 6A D5 4A 01 40 E1 0D 82 20 08 00 B4
00 24 42 0A E3 6D 1B F1 E0 AA 75 20 05 A1 26 00
A1 80 08 20 06 00

85 00 00 2C
CB 96 01 07 16 22 30 40 51 57 89 63 9A A1 72 96
68 62 50 3D 28 14 08 0B 16 22 30 40 51 57 89 63
9A A1 72 96 68 62 50 3D 28 14 08 00

85 80 00 12
00 00 20 44 08 00 60 47 00 00 10 22 04 00 B0 23
15 00

86 00 00 30
FE 68 58 02 3C 64 B8 06 00 60 15 00 50 15 56 51
15 55 61 15 00 60 15 00 50 15 56 51 15 55 61 95
AB 18 80 00 80 00 80 00 80 4C 29 84 52 01 09 00

86 80 00 0E
F0 B1 71 EF 49 C0 80 1A 00 00 00 00 00 00

87 00 00 0C
FF 81 68 AC 22 6D 24 00 00 00 00 00

87 80 00 17
0D 08 4A 00 25 80 64 0C 51 71 48 91 03 62 8C 8C
24 69 81 71 44 7C 14

88 00 00 1F
00 00 03 E7 1F 17 00 78 00 03 D4 18 30 88 41 8A
39 28 A9 C5 9A 7B F5 07 7E E0 07 7E 20 10 00

88 80 00 79
44 77 03 40 8A F1 FF 43 30 08 C1 46 A0 80 24 18
30 06 64 C1 80 21 07 C4 E1 D0 68 40 20 1D 04 48
40 40 28 10 90 70 38 1A 10 47 03 E2 20 00 1C 80
50 30 00 E0 E1 01 00 28 0E 06 03 11 11 11 11 11
91 88 88 88 88 88 C8 08 86 C6 E3 81 00 20 00 21
42 88 00 00 00 00 40 00 00 31 04 41 06 00 00 00
00 92 24 49 92 04 00 00 00 00 00 00 00 85 11 0C
00 00 40 00 00 00 00 5E 00

89 00 00 19
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00

89 80 00 13
01 00 00 0C 00 00 00 00 01 02 01 01 44 0C CE E7
62 06 00

8A 00 00 80
51 02 41 5E E9 EF F7 FB FD 7E 01 00 00 E0 C5 8D
8C 7C 20 66 64 E4 03 13 20 23 1F 98 02 19 F9 C0
01 90 C9 F1 0E 80 4C 0E 0F CA 8B E2 E2 41 0E 20
88 8A 07 39 00 00 10 00 00 5C BC BD 2B 00 40 A1
50 F8 17 32 F2 81 31 00 FF 41 46 3E 30 06 E0 1F
C8 C8 07 C6 00 FC 00 19 F9 C0 18 80 7F 23 23 1F
18 03 F0 5F 64 E4 03 63 00 FE 89 8C 7C 60 0C C0
FF 90 91 0F 8C 01 00 01 BF 1F 00 00 00 00 00 00

8A 80 00 80
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 CA EB 26 2B 23 87 20 93 11 31 CA C8 21 C8
E4 66 AE 32 72 08 32 19 11 A3 8C 1C 82 4C 06 E5
B5 C9 CA C8 65 AE 32 32 13 00 00 00 80 96 22 39
00 40 10 41 50 14 82 60 18 C3 70 1C 68 6D 25 AE
7C 9E E3 68 9A A2 58 96 61 48 92 20 B0 D6 D6 2A
B9 20 48 92 61 58 96 A2 68 9A E3 78 1E 69 6D 21
8E 74 1C C3 60 18 82 50 14 41 40 10 00 A0 56 02

8B 00 00 16
02 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 C0 40

8C 00 00 3F
EF BD F7 DE 7B EF BD 07 08 08 0A 0C 0C 0C 0C 0C
0C 0C 0C 5C 09 A8 AA AA AA AA AA AA AA AA AA 5A
59 59 59 59 59 59 59 59 59 59 59 09 04 FF 05 80
80 00 04 20 00 01 08 40 00 02 10 80 00 04 0F

8C 80 00 27
95 93 8F 8C 80 8B 89 87 86 84 83 83 00 60 F6 FF
FF 2F F3 EF FF BF 0F 0F AF B5 71 0E 6C 4A 69 08
00 00 00 00 00 00 00

8D 00 00 80
00 04 08 0C 00 10 14 18 1C 00 20 28 30 38 00 40
48 50 58 00 60 68 70 78 00 80 88 90 98 00 A0 A8
B0 B8 00 C0 C8 D0 D8 00 E0 E8 F0 F8 00 FC FE FF
00 00 04 08 0C 00 10 14 18 1C 00 20 28 30 38 00
40 48 50 58 00 60 68 70 78 00 80 88 90 98 00 A0
A8 B0 B8 00 C0 C8 D0 D8 00 E0 E8 F0 F8 00 FC FE
FF 00 00 04 08 0C 00 10 14 18 1C 00 20 28 30 38
00 40 48 50 58 00 60 68 70 78 00 80 88 90 98 00

8D 80 00 14
A0 A8 B0 B8 00 C0 C8 D0 D8 00 E0 E8 F0 F8 00 FC
FE FF 00 00

90 00 00 07
90 00 00 00 00 00 00

91 00 00 0D
2D D3 00 41 10 04 41 10 04 41 10 1E 00

91 80 00 19
01 05 00 05 00 00 00 00 00 00 00 00 00 00 00 00
FF 00 00 00 24 00 00 00 00

92 00 00 10
00 03 00 9D BF 10 00 00 00 00 00 00 00 00 75 83

01 FE
作者: czjt1234    时间: 2022-11-30 11:09

回复 10# hqinghua


    根据啥规律改成2.txt的
作者: hqinghua    时间: 2022-11-30 12:10

回复 11# czjt1234
你好,这个是我自已手动改的
作者: pd1    时间: 2022-11-30 13:42

把你的标准格式放在geshi.txt里,你手动做一个就行。然后bat文件和其他txt文件放在同一个目录下运行。
https://easychuan.cn/r/2eex2?t=ff
按这个附件试试看,记住要处理的文本里字符串个数要和标准格式一致吧,不一致的话没考虑
  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  4. pause
  5. #>
  6. dir *.txt|?{$_.Name -ne "geshi.txt"}|%{
  7. $name=$_.basename
  8. $a=gc $_
  9. $aa=@()
  10. for($i=0;$i -le $a.Length;$i=$i+2){$aa+=$a[$i]+$a[$i+1]}
  11. $m=0
  12. gc .\geshi.txt|%{
  13. if($_.length -eq 0)
  14. {
  15. $n=0;
  16. ""|out-file ($name+"_result.txt") -append
  17. }
  18. else
  19. {
  20. $n=($_.length+1)/3
  21. [system.String]::Join(' ', $aa[$m..($m+$n)]) |out-file ($name+"_result.txt") -append
  22. $m+=$n
  23. }
  24. }
  25. }
复制代码

作者: hqinghua    时间: 2022-11-30 13:53

回复 13# pd1
好的,我试试
谢谢!
作者: hqinghua    时间: 2022-11-30 14:21

回复 13# pd1
大师我这边试了一下,第二行的数值都会往前面一行后面写同样的参数,如下
5A 56 04 3E 25 30 00 9D BF 10 84

84 00 00 02 C8
C8 04 84

84 80 00 26 5A
5A 51 B5 AA 6A D5 4A 01 40 E0 0D 82 20 08 00 B4 00
00 24 42 0A E3 6D 5B 70 41 B4 4D 20 19 E1 26 00 A1
A1 80 08 20 06 00 85

85 00 00 2C 51
51 A3 02 00 15 26 3A 4F 63 6B A1 94 CD 69 35 76 4C
4C 4A 3B 2D 1E 11 08 00 15 26 3A 4F 63 6B A1 94 CD
CD 69 35 76 4C 4A 3B 2D 1E 11 08 00 85

  看下是否还能修改一下
谢谢了!
作者: pd1    时间: 2022-11-30 15:14

本帖最后由 pd1 于 2022-11-30 15:16 编辑

回复 15# hqinghua


    21行改成
($m+$n-1)    每一行多加了一个数    -1应该就行了
作者: pd1    时间: 2022-11-30 15:19

你自己做的数据是不是有点问题
C8 04
变成了C8 00

这个我改不了,没规律,也可能你自己搞错了
作者: hqinghua    时间: 2022-11-30 16:52

回复 16# pd1
我再试试看
谢谢了!




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