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

[文本处理] [已解决]如何用批处理实现隔一行加一行空行?

有时候排版文档会需要隔一行空一行,这样看起来比较好看,方便阅读

那么,请问如何用批处理实现隔一行加一行空行呢?

[ 本帖最后由 qq114527345 于 2011-1-10 19:27 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

非常感谢!又学到不少东西呵呵~

TOP

回复 5楼 的帖子

命令行工具 sed.exe 下载地址:
http://bbs.bathome.net/thread-3981-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. set /p jg=请输入要间隔的行数:
  3. (for /f "delims= eol=" %%a in (1.txt) do (
  4.     echo,%%a
  5.     set /a "n = n %% jg + 1, 1 / (n - jg)" || echo,
  6. )) >1_.txt 2>nul
复制代码
解释:
“set /a n = n %% jg + 1”是让 n 的值反复在 1~间隔的行数 间循环,例如输入的是 3,则 n 的值就反复为 1、2、3、1、2、3...其中的“%”是取余运算,也就是计算 n 除以 jg 的余数。

后面的“1 / (n - jg)”,假如输入的间隔是 3,当 n 等于 3 时,“1/(3 -3)”就会发生错误,错误就会执行“||”后面的命令。“2>nul”用来屏蔽错误提示。

——————————————————————————

因为默认忽略以分号“;”开头的行,用“eol=”就是忽略以“”开头的行。“”是退格符,也可以用其他不存在于行首的字符。

当文件名中有空格,就必须用双引号括起来,这时如果不用 usebackq,"1.txt" 就会作为字符串处理,而不是文件。

[ 本帖最后由 tmplinshi 于 2011-1-10 18:31 编辑 ]
1

评分人数

TOP

感谢三位大大!

我在想Batcher大是不是用LINUX系统的哈,不过sed -i G 1.txt真的超简洁哈~

还有请问一下tmplinshi大的代码里的 eol= 和hanyeguxing大的代码里的 usebackq 都有些什么作用?

其实这样就可以了~
  1. @echo off
  2. (for /f "delims=" %%a in (1.txt) do (echo,%%a &echo,))>1_.txt
复制代码


我再加个要求哈,要求可以设定间隔的行数,比如说隔两行加一行空行,或者隔三行等~
  1. set /p jg=请输入要间隔的行数:
复制代码

TOP

  1. sed -i G 1.txt
复制代码
  1. gawk "1;{print \"\"}" 1.txt | more >2.txt
复制代码
  1. gawk "BEGIN{ORS=\"\n\n\"};1" 1.txt | more >2.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. (for /f "usebackq delims=" %%a in ("1.txt") do (echo/%%a&echo/))>1_.txt
复制代码

[ 本帖最后由 hanyeguxing 于 2011-1-9 22:23 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

  1. @echo off
  2. (for /f "delims= eol=" %%a in (1.txt) do (
  3.     echo,%%a
  4.     echo,
  5. ))>1_.txt
复制代码

TOP

返回列表