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

[文本处理] 批处理怎样把文件的指定行写入另一个文件?

批处理数据。记事本b.txt,要a.txt的1行12行24行36行……(12的倍数行)直至a.txt最后一行。求批处理,新手寻求帮助。

本帖最后由 zm900612 于 2011-4-12 14:20 编辑
  1. @echo off
  2. (for /f "delims=" %%a in (a.txt) do (
  3.     set /a m+=1,"test=1/(m%%12*!!(m-1))"||echo;%%a
  4. ))>b.txt 2>nul
  5. pause
复制代码

TOP

谢谢了 试试

TOP

不对啊……b.txt 和a.txt 一样的

TOP

1
2
3
4
5
6
7
8
9
10
如果要2的倍数行b.txt就是
2
4
6
8
10

TOP

本帖最后由 hanyeguxing 于 2011-4-12 14:33 编辑
  1. @echo off
  2. (for /f "delims=" %%a in (a.txt) do 2>nul set/an+=1,"1/(n%%12*(n-1))"||echo;%%a)>b.txt
复制代码
  1. @echo off&set n=-1
  2. :a
  3. if not %n%==-1 set "m=skip=%n% "
  4. (for /f "%m%delims=" %%a in (a.txt) do (
  5. echo;%%a
  6. set/an+=12
  7. goto:a
  8. ))>b.txt
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

两个小错误,已修正。
6楼代码未包含第一行...

TOP

7# zm900612


为什么要写成!!(m-1) 呢?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

因为没找到更好的算法能同时包括1和所有12的倍数...

TOP

9# zm900612


我的意思是,为什么 (m-1) 前要用 !! 呢?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

有道理,考虑不周,多余了的

TOP

百度知道上求得的答案!谢谢大家了!呵呵!
  1. @echo off
  2. echo 批处理数据。记事本b.txt,要a.txt的1行12行24行36行……(12的倍数行)直至a.txt最后一行。
  3. echo by breakme QQ:49849628
  4. set b=
  5. setlocal EnableDelayedExpansion
  6. rem 读取文件有多少行?并将第一行数据读取
  7. for /f "tokens=1* delims=*" %%i in (a.txt) do set /a b+=1 && if "!b!"=="1" echo %%i>>b.txt
  8. rem 按规律匹配数据 0 开始,每加 12 就读取一行
  9. for /l %%i in (0,12,!b!) DO call :a %%i
  10. exit
  11. :a
  12. set a=
  13. for /f "tokens=1* delims=*" %%i in ('type a.txt') do (
  14. set /a a+=1
  15. if "!a!"=="%1" echo %%i>>b.txt
  16. )
  17. goto :eof
复制代码

TOP

这效率...            

TOP

为什么不用findstr /n呢?
***共同提高***

TOP

14# batman


因为用了findstr /n后还得用set/a
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表