找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25100|回复: 3

[文本处理] [已解决]批处理怎样把文本每行增加上3行下3行内容?

[复制链接]
发表于 2010-4-15 20:11:26 | 显示全部楼层 |阅读模式
这个问题还真是不好描述,开始每行先重复5次,然后逗号,后面出现原先前三行和后三行的内容
例如:a.txt内容
1
2
3
4
5
6
7
8
9
按要求处理后
1,7
1,8
1,9
1,2
1,3
1,4
2,8
2,9
2,1
2,3
2,4
2,5
3,9
3,1
3,2
3,4
3,5
3,6
4,1
4,2
4,3
4,5
4,6
4,7
5,2
5,3
5,4
5,6
5,7
5,8
6,3
6,4
6,5
6,7
6,8
6,9
7,4
7,5
7,6
7,8
7,9
7,1
8,5
8,6
8,7
8,9
8,1
8,2
9,6
9,7
9,8
9,1
9,2
9,3
即循环起来,第一行他的前三行就是文章末尾的3行,后三行即他下面内容的三行,如图的一个循环效果

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2010-4-16 04:59:35 | 显示全部楼层
推荐在运行批处理前,先备份a.txt,因为批处理读取原文本a.txt,并把结果写回文本a.txt:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do set/a i+=1&set "j!i!=%%i"
  3. title 寒夜孤星制作 2>a.txt
  4. for /l %%I in (1,1,%i%) do for %%l in (l-3,l-2,l-1,l+1,l+2,l+3) do (
  5. set l=%%I&set/a l=%%l
  6. if !l! lss 1 set/a l=l+i
  7. if !l! gtr %i% set/a l=l-i
  8. call echo.!j%%I!,%%j!l!%%)>>a.txt
复制代码
这哪是文本处理啊,整个就一数学题啊&$~#%-%$#@¥!……

[ 本帖最后由 hanyeguxing 于 2010-4-16 07:37 编辑 ]
发表于 2010-4-16 06:37:28 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims=:" %%i in ('findstr /n .* a.txt') do set i=%%i&set "j%%i=%%j"
  3. title 寒夜孤星制作 2>a.txt
  4. for /l %%I in (1,1,%i%) do for %%l in (l-3,l-2,l-1,l+1,l+2,l+3) do (
  5. set l=%%I&set/a l=%%l
  6. if !l! lss 1 set/a l=l+i
  7. if !l! gtr %i% set/a l=l-i
  8. call echo.!j%%I!,%%j!l!%%)>>a.txt
复制代码
这样可以提高运行速度。。。

[ 本帖最后由 hanyeguxing 于 2010-4-20 20:23 编辑 ]

评分

参与人数 2PB +16 收起 理由
x9tiancmd + 6 花了三分钟,学到好方法
Batcher + 10 乐于助人

查看全部评分

 楼主| 发表于 2010-4-16 09:12:58 | 显示全部楼层
谢谢,2 3楼测试正确
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 08:25 , Processed in 0.026736 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表