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

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

只限新手
在联盟中发现一个老帖子,其内容大概为:按照第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. 请按任意键继续. . .
复制代码
1

评分人数

我倒是认为用 ^ 这个符号还是挺不错的。首先结构没有打乱,一看就知道是一行代码;再者直接写成一行会被浏览器断句,一条一条的且省了几个括号。
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

TOP

tokens>31就不行
还是第一次知道

TOP

呵呵,tireless可能误会batman版主了,当然版主的言语也确有不当。
我分析一下
banman兄是一位批处理“老鸟”对代码的要求自然比新手要高些,
比如代码的可读性,效率。。等等。。
所以若非需要一般都不主张使用一些比较晦涩的写法。
而tireless兄的代码,估计也是在试用这些比较“另类”的方法,
以banman兄的恒量标准来看,该代码则采用了一些大可不必的语法,所以说了句不太恰当的话。
误会、误会。。

不过也要说一句batman版主,作为管理人员,说话应时时注意自己“身份”不要仅凭自己一时意气发言。
技术问题请到论坛发帖求助!

TOP

回复 6楼 的帖子

是的。
我个人更倾向于括号^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5楼 的帖子

知道。“用括号括起来统一输出”代替也是可以的吧

TOP

回复 4楼 的帖子

句柄重定向的方法在频繁写文件的场合挺适用的,请坚持之。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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 编辑 ]

TOP

不知楼上为什么总要把代码写得标新立意。。。
1

评分人数

    • tireless: 谢谢批评!我以后会注意这个问题。PB + 5
***共同提高***

TOP

  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 编辑 ]
1

评分人数

    • wxcute: 这个结构挺不错的。PB + 5

TOP

返回列表