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

【出题】批处理取文本中的第117列(限新手)

[复制链接]
发表于 2009-3-13 22:12:58 | 显示全部楼层 |阅读模式
只限新手
在联盟中发现一个老帖子,其内容大概为:按照第117列的内容的前三个字符生成文件
现在就这个问题出个小题目:即读出文本中第117列的内容,可以用以下代码生成测试文本:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (
  4. for /l %%a in (1 1 2000) do (
  5.   call set "var!m!=%%var!m!%%%%a "
  6.   set /a n+=1
  7.   if "!n!"=="120" (
  8.     call echo.%%var!m!%%
  9.     set /a m+=1,n=0
  10.   )
  11. )
  12. )>test.txt
复制代码

读取的结果如下:
  1. 117
  2. 237
  3. 357
  4. 477
  5. 597
  6. 717
  7. 837
  8. 957
  9. 1077
  10. 1197
  11. 1317
  12. 1437
  13. 1557
  14. 1677
  15. 1797
  16. 1917
  17. 请按任意键继续. . .
复制代码

评分

参与人数 1PB +5 收起 理由
Batcher + 5 Good work!

查看全部评分

发表于 2009-3-14 00:08:57 | 显示全部楼层
  1. @echo off>nul 3>117.txt
  2. for /f "tokens=31,*" %%a in (test.txt) do ^
  3. for /f "tokens=31,*" %%c in ("%%b") do ^
  4. for /f "tokens=31,*" %%e in ("%%d") do ^
  5. for /f "tokens=24" %%i in ("%%f") do echo %%i
复制代码


[ 本帖最后由 tireless 于 2009-3-14 00:10 编辑 ]

评分

参与人数 1PB +5 收起 理由
wxcute + 5 这个结构挺不错的。

查看全部评分

发表于 2009-3-21 15:25:39 | 显示全部楼层
不知楼上为什么总要把代码写得标新立意。。。

评分

参与人数 1PB +5 收起 理由
tireless + 5 谢谢批评!我以后会注意这个问题。

查看全部评分

发表于 2009-3-21 17:27:49 | 显示全部楼层

回复 3楼 的帖子

总?是指哪些?

句尾的转义符号“^”我好像只写过这一次;
开头的句柄转换其实我也不太懂,批处理结尾没有把句柄转换回来,确实不太好,好吧,以后不这么写;
我有时会利用“除数不能为0”来判断n的值...其实我很在乎代码的效率...set /a n+=1,1/(10-n) 2>nul || pause 好像是比 set /a n+=1&if !n!==10 pause 的效率低一点点...

[ 本帖最后由 tireless 于 2009-3-21 20:10 编辑 ]
发表于 2009-3-21 17:33:56 | 显示全部楼层

回复 4楼 的帖子

句柄重定向的方法在频繁写文件的场合挺适用的,请坚持之。
发表于 2009-3-21 17:40:10 | 显示全部楼层

回复 5楼 的帖子

知道。“用括号括起来统一输出”代替也是可以的吧
发表于 2009-3-21 17:41:53 | 显示全部楼层

回复 6楼 的帖子

是的。
我个人更倾向于括号^_^
发表于 2009-3-21 18:02:39 | 显示全部楼层
呵呵,tireless可能误会batman版主了,当然版主的言语也确有不当。
我分析一下
banman兄是一位批处理“老鸟”对代码的要求自然比新手要高些,
比如代码的可读性,效率。。等等。。
所以若非需要一般都不主张使用一些比较晦涩的写法。
而tireless兄的代码,估计也是在试用这些比较“另类”的方法,
以banman兄的恒量标准来看,该代码则采用了一些大可不必的语法,所以说了句不太恰当的话。
误会、误会。。

不过也要说一句batman版主,作为管理人员,说话应时时注意自己“身份”不要仅凭自己一时意气发言。
发表于 2009-3-21 18:19:50 | 显示全部楼层
tokens>31就不行
还是第一次知道
发表于 2009-3-21 19:05:57 | 显示全部楼层
我倒是认为用 ^ 这个符号还是挺不错的。首先结构没有打乱,一看就知道是一行代码;再者直接写成一行会被浏览器断句,一条一条的且省了几个括号。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 00:29 , Processed in 0.021752 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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