Board logo

标题: [文本处理] [已解决]批处理在文本每一行内容后面/行尾插入/添加/加上指定字符串 [打印本页]

作者: lslkkda    时间: 2017-3-25 12:28     标题: [已解决]批处理在文本每一行内容后面/行尾插入/添加/加上指定字符串

在每一排数字后面   固定的位置加上“”00    sush  ”   怎么弄个批处理文件一次处理完啊!!  附件已经上传了
作者: zuodx    时间: 2017-3-25 12:48

perl -lpe "$_ = $_ . '    00    sush'"   wj.txt    >result.txt
作者: lslkkda    时间: 2017-3-25 13:18

回复 2# zuodx

大神!!把你这代码做成BAT格式批处理文件 还是不行啊  处理的文本文档是空的
作者: ShowCode    时间: 2017-3-25 13:20

回复 3# lslkkda


    2楼是Perl脚本,Windows不安装Perl环境的话,是无法执行的。
作者: zuodx    时间: 2017-3-25 13:21

下perl,执行就行了
作者: zuodx    时间: 2017-3-25 13:22

不用什么bat ,直接把那一行复制到命令行就行了
作者: ShowCode    时间: 2017-3-25 13:24

  1. @echo off
  2. (for /f %%i in ('type "1.txt"') do (
  3.     echo,%%i  00  sush
  4. ))>"2.txt"
复制代码

作者: cfwyy77_bat    时间: 2017-3-25 13:34

本帖最后由 cfwyy77_bat 于 2017-3-25 13:37 编辑
  1. for /f %%a in (1.txt) do (echo %%a    00    sush>>2.txt)
  2. pause
复制代码
这样貌似就可以了。
不过前面长度不一样  加入的位置就不固定了。
作者: lslkkda    时间: 2017-3-25 14:12

回复 8# cfwyy77_bat

这位大神的代码  倒是加入了“00    sush”    可惜后面位置不对啊         
就是要求后面的格式 位置固定啊  不然没法用啊  有办法吗
作者: zuodx    时间: 2017-3-25 14:51

你要告诉从多少列开始加啊
作者: taofan712    时间: 2017-3-25 16:51

回复 9# lslkkda


    复制粘贴七楼的代码,%%i   00   sush之间的空格,改成tab键。
作者: lslkkda    时间: 2017-3-25 18:40

回复 11# taofan712

搞定了!!感谢各位大神~~~~~
作者: /zhqsystem/zhq    时间: 2017-3-25 18:59

20位数字内有效,其他位数自己修改
  1. for /l %%n in (0,1,300)do call set "#n=%%#n%% "
  2. for /f %%i in ('type "%~f1"')do (
  3. call set "$n= %%i"
  4. call set "$n=%%$n: =%%%%#n%%"
  5. call echo,%%$n:~0,20%% 00    sush
  6. )
复制代码

作者: 老刘1号    时间: 2017-3-25 19:45

本帖最后由 老刘1号 于 2017-3-25 19:48 编辑

回复 6# zuodx


    哼哼,不用下载什么Perl,写2行Bat就完了
作者: 老刘1号    时间: 2017-3-25 19:53

回复 13# /zhqsystem/zhq


    放着Tab不用……
作者: /zhqsystem/zhq    时间: 2017-3-25 21:03

回复 15# 老刘1号
一个TAB=8个字符,如果是1个字符永远不会与20个字符的对齐
作者: lslkkda    时间: 2017-3-25 21:55

又出问题了!!位置道是对了 但是还是用不了!!我看了下源文件数字后面的空格是退格键  按11楼方法改的空格是TAB键!跟源文件不一样 用不了啊。那位大神在看看 附件文件的前三排就是源文件!!
作者: 老刘1号    时间: 2017-3-25 22:06

回复 16# /zhqsystem/zhq


    嘿嘿,这就是你的无知了
CMD和记事本对Tab都有对齐标准
不是简单的代表8个空格
要不怎么会有这个符号出现呢?
直接用空格代替好了~
作者: /zhqsystem/zhq    时间: 2017-3-25 22:19

回复 18# 老刘1号
1TAB键a
01234567890123456789TAB键a

这俩在记事本中不能体现TAB分离的整齐对齐视觉效果,添加两个又怕复制到excel导致被换列
只能加特定字符来处理
作者: 老刘1号    时间: 2017-3-25 22:20

回复 19# /zhqsystem/zhq


    额,这个相差太悬殊……不管它
作者: lslkkda    时间: 2017-3-25 22:25

额~虽然不太懂你们说的什么意思  但我感觉我这问题是个疑难杂症!!   大神留个QQ或者加我QQ1417793009 我传整个源文件研究下!
作者: pcl_test    时间: 2017-3-25 22:50

回复 17# lslkkda

退格键是什么鬼?然而只是空格,13楼的试了吗
作者: Nsqs    时间: 2017-3-26 13:09

  1. powershell -command "foreach($i in Get-Content '1.txt'){[array]$s+=$i.PadRight(20)+'00'+' '+'sush'};$s|Set-Content 'n.txt'"
复制代码
一行
作者: Nsqs    时间: 2017-3-26 13:35

回复 15# 老刘1号


    没那么简单,如果用tab的话,每行长短不一就会无法对齐
作者: 老刘1号    时间: 2017-3-26 18:21

回复 24# Nsqs


    nonono,这就是你的无知了
  1. 123342 tab 668866 Hollos U
  2. 12332 tab 6652 Holl H
  3. 7777777 Tab s Shwuadd N
  4. 超过8个字符串用多Tab对齐
  5. 1234567898765 Hollo
  6. 1234 Hollo
  7. 1 Hollo
  8. 66666666666666666666666666666666666666666 Hollo
复制代码
复制到记事本里,我还没见过Tab搞不了的
不超过8个字符就会自动对齐
长短不一的时候就计算长度,
除以8得到整数部分
2个字符串的除以8得到整数部分相差数+1补给短的
1个Tab补给长的
肯定对的齐齐的。。。
作者: lslkkda    时间: 2017-3-27 12:33

回复 13# /zhqsystem/zhq
用13楼提供的批处理文件做出来的结果格式是对的 ,跟源文件对比位置还是有差异,多了几个空格,如果能去掉多出来的空格 修改成跟源文件的“00    sush ”位置对齐 就能用了!!
作者: ShowCode    时间: 2017-3-27 12:42

回复 21# lslkkda


    把原文件压缩上传到顶楼,我看一下。
作者: Nsqs    时间: 2017-3-27 12:45

回复 26# lslkkda
  1. @powershell -command "foreach($i in Get-Content '1.txt'){[array]$s+=$i.PadRight(17)+'00'+''.PadRight(4)+'sush'};$s|Set-Content 'n.txt'"
复制代码

作者: lslkkda    时间: 2017-3-27 12:46

回复 27# ShowCode

好的!
作者: Nsqs    时间: 2017-3-27 13:50

回复 29# lslkkda


    给你方法了居然还在纠结
作者: lslkkda    时间: 2017-3-27 16:00

回复 30# Nsqs

感谢感谢!测试成功 ,你发的这个批处理代码又快又准又能用 终于解决了我的大问题 。 :victory: :victory:
作者: lslkkda    时间: 2017-3-27 21:44

回复 28# Nsqs

还有个小问题 这个代码一次能处理多少啊  好像大于500K的文件就处理不了啊
作者: Nsqs    时间: 2017-3-27 22:46

本帖最后由 Nsqs 于 2017-3-28 15:59 编辑
  1. @powershell -c "[string]$f=((Get-Content -raw '1.txt')-replace '(\d+)',('$1'+''.PadRight(50)))-replace '(.{16}) +',('$1 '+'00'+''.PadRight(4)+'sush');[io.file]::WriteAllLines('n.txt',$f)"
复制代码
保存bat,490毫秒处理完800kb
作者: WHY    时间: 2017-3-28 09:46

本帖最后由 WHY 于 2017-3-28 16:55 编辑
  1. gawk "$0~/.+$/{s=\" \";len=17-length($0);for(i=1;i<len;i++)s=s\" \";$0=$0s\"00    sush\"};1" a.txt > b.txt
复制代码
  1. set "s=[IO.File]::ReadAllText('a.txt', [Text.Encoding]::Default)"
  2. PowerShell -c "[regex]::Replace(%s%, '[^\r\n]+', {param($m); $s=$m.Value; $s+' '*(17-$s.Length)+'00    sush'})" > b.txt
复制代码
  1. @if(0)==(0) echo off
  2. cscript //nologo //e:jscript "%~f0" < a.txt > b.txt
  3. pause & goto :EOF
  4. @end
  5. var sp = '                 ';
  6. var s = WSH.StdIn.ReadAll().replace(/[^\r\n]+/g,function(s0){return (s0 + sp).substr(0, 17) + '00    sush'})
  7. WSH.Echo(s)
复制代码





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