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

[文本处理] 批处理或VBS如何将多个txt文本每隔指定字符数插入一个指定字符串?

本帖最后由 pcl_test 于 2016-10-16 15:14 编辑

有多个TXT文档,每篇TXT文档隔500字插入“霏凡”一次,插入4次终止(即每篇TXT插入4次“批处理”)。。。


PS:如果上面的实现起来麻烦的话,那么所有TXT每篇隔500字只插入一次“批处理”也行的。

这个有能实现的vbs、软件或批处理吗?

谢谢分享啊

TOP

笨办法,保存为test.vbs
每5个字符插入一次,插入7次。如果一行不够7次插入,或不够5个字符,换行重新插入 ...
apang 发表于 2013-1-12 13:51


这个办法可行,感谢apang热心的帮助。。。(稍微有点缺陷的是,一行的字数要是少于要间隔的字数,就得换行),不过,能出来这样的效果已经很不容易了。。。再次感谢!!!
这几天,因为刚接触批处理,所以问题问得急点,心态不够平和,对于个别热心帮助的朋友的回复,没有给予及时的反馈,在此,对于那些热心的朋友表示衷心的感谢。。。
以后,自己慢慢去琢磨,问题也不会问得这么密集了,希望能跟大家一起进步。。。

TOP

回复 16# qhefun


    14楼的代码你怎么看?

TOP

这个批处理不好写吗?

TOP

没出来什么效果
qhefun 发表于 2013-1-11 23:54



你所说的没什么效果是源文件没变化吗??
代码是把修改后的文字显示到cmd窗口。

TOP

笨办法,保存为test.vbs
每5个字符插入一次,插入7次。如果一行不够7次插入,或不够5个字符,换行重新插入。
  1. set fso = createobject("scripting.filesystemobject")
  2. for each file in fso.getfolder(".").files
  3.    ext = fso.getextensionname(file)
  4.    if lcase(ext) = "txt" then MySub 5,7,"批处理之家"
  5. next
  6. msgbox "OK"
  7. sub MySub(n,m,v)
  8.    set objTxt = fso.opentextfile(file)
  9.    do until objTxt.atendofstream
  10.       strLine = objTxt.readline
  11.       redim ar(int(len(strline)/n))
  12.       for i = 0 to ubound(ar)
  13.          ar(i) = mid(strline,i*n+1,n)
  14.          if s < m and len(ar(i)) = n then
  15.             s = s + 1
  16.             ar(i) = mid(strline,i*n+1,n) & v
  17.          end if
  18.       next
  19.       str = str & join(ar,"") & vbcrlf
  20.    loop
  21.    objTxt.close :set objTxt = nothing
  22.    fso.opentextfile(file,2,true).write str
  23. end sub
复制代码
测试文本:
  1. 一个人命里不见得有太太或丈夫,但绝对不可没有朋友。ffff
  2. abcd
  3. 即使是荒岛上的鲁滨逊,也不免需要一个“礼拜五”
复制代码
修改后:
  1. 一个人命里批处理之家不见得有太批处理之家太或丈夫,批处理之家但绝对不可批处理之家没有朋友。批处理之家ffff
  2. abcd
  3. 即使是荒岛批处理之家上的鲁滨逊批处理之家,也不免需要一个“礼拜五”。
复制代码

TOP

回复  qhefun
是否考虑编码问题
terse 发表于 2013-1-12 12:20


编码为ANSI。

TOP

回复 11# qhefun
是否考虑编码问题

TOP

这样呢?
terse 发表于 2013-1-12 02:13


这个也不行的。。。

TOP

没出来什么效果
qhefun 发表于 2013-1-11 23:54

这样呢?
  1. @echo off&SetLocal EnableDelayEdexpansion
  2. set N=5&set M=4&set "s=批处理之家"
  3. set /a "M=M*(N-1),i=N-1"
  4. for /f "delims=" %%i in (test.txt) do (
  5.     set var=&set "str=%%i"
  6.     for /l %%j in (%N% %N% %M%) do (
  7.         if "!str:~%n%!" neq "" (
  8.            if defined str set "var=!var!!str:~,%N%!%s%"
  9.            set str=!str:~%N%!
  10.         )
  11.     )
  12.     if "!str:~%i%!" neq "" (
  13.        set "var=!var!!str:~,%N%!%s%"
  14.        set str=!str:~%N%!
  15.     )
  16.        echo;!var!!str!
  17. )
  18. pause
复制代码

TOP

本帖最后由 qhefun 于 2013-1-11 23:59 编辑
每5个字符,插入4次:
QIAOXINGXING 发表于 2013-1-11 23:45


没出来什么效果

TOP

本帖最后由 QIAOXINGXING 于 2013-1-11 23:49 编辑

每5个字符,插入4次:
  1. @echo off&SetLocal EnableDelayEdexpansion&cd /d "%~dp0"
  2. set /a n=5
  3. set /a m=(4-1)*n
  4. for /f "delims=" %%a in (11.txt) do (
  5.   set "str=%%a"
  6.   for /l %%a in (0 !n! !m!) do (
  7.     for %%i in (!n!) do set /p=!str:~%%a,%%i!<nul
  8.     set /p=批处理之家<nul
  9.   )
  10.   set /a mm=m+n
  11.   for %%i in (!mm!) do set /p=!str:~%%i!<nul
  12.   echo;
  13. )
  14. pause
复制代码

TOP

回复 6# qhefun


    请把所有需求都更新到顶楼

TOP

举个例吧,亲
修改前文档什么样子,修改后又是什么样子
apang 发表于 2013-1-11 21:37


比如:N篇TXT的文章中,我要在每篇中每隔5个文字就插入“批处理之家”一次,插入4次后就终止插入。。。
举例:一个人命里批处理之家不见得有太批处理之家太或丈夫,批处理之家但绝对不可批处理之家没有朋友。即使是荒岛上的鲁滨逊,也不免需要一个“礼拜五”。

TOP

返回列表