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

[文本处理] [已解决]批处理分隔符截取文本时与理论不符

下面将文字的前面加:: 然后用for命令读取,我试了一下,发现以:为分隔符(即delims=:),进行命令
for /f "delims=:" %%i  in (%~fs0) do echo %%i  结果显示正文只少了:: 为啥显示的内容是分割符后的,不是
默认显示分隔符前的第一部分吗???
  1. ::   我在这个世界上生活了十几年,虽总在加
  2. :: 强情操的培养,但是有的时候,仍然很难做一
  3. :: 些性命悠关的大决定。生存,还是毁灭,这是
  4. :: 个问题。莎士比亚的这个疑问困扰了古代无数
  5. :: 的哲人。
  6. ::   他人的利益重要,还是自己的利益重要?
  7. :: 为了祖国是不是该牺牲个人的利益?为人民服
  8. :: 务的宗旨是不是要坚持?这是我们的品德教育
  9. :: 用了十年,才使我们彻底弄清的问题。革命先
  10. :: 烈用八年抗战,为我们做出了最好的回答。我
  11. :: 们这代人是跨世纪的一代,将来会面对更多的
  12. :: 诱惑。正因为如此,我们必须从小就树立一切
  13. :: 为了他人的崇高信念。
  14. ::   生命是人最宝贵的财富,但是在重要的时
  15. :: 候,个人利益必须牺牲。罗胜教在刺骨的冰水
  16. :: 中救孩子,这是他心灵的选择。他牺牲自己,
  17. :: 让孩子的生命得到延续。而在我们的生活中,
  18. :: 大多没有这么极端的情况。但也不能有一点危
  19. :: 险就屁滚尿流。做出牺牲自己的选择,不只是
  20. :: 象用眼睛看来那么简单的。我们必须时时反省
  21. :: 自己,只有时刻严格要求自己,才可能成为一
  22. :: 个完整的人。
  23. ::   个人的利益首先还要服从集体利益,就像
  24. :: 当年一个人再怎么成功,其力量也不能改变国
  25. :: 家孱弱的现实。个人的智慧再强大,也比不上
  26. :: 集体智慧。是全中国人民集体才改变了我国一
  27. :: 穷二白的面貌,是千千万万劳动中国人民艰苦
  28. :: 奋斗痴心不悔,才建成了我们的国家,有人说
  29. :: 雷锋傻,我们就要做革命的傻子,每天用雷锋
  30. :: 事迹逼迫自己努力向上。但这其实非常难,人
  31. :: 不是神,做出牺牲自己的决定,内心斗争是必
  32. :: 然要经历的。这是,我们必须提高觉悟,尽量
  33. :: 排除病态的极端个人主义思想干扰,严格要求
  34. :: 自己,做出正确的心灵选择。
  35. ::   一个人的力量微不足道,经常无法实现宏
  36. :: 伟目标。所以如果想要社会进步,我们必需要
  37. :: 时刻准备,甚至不惜牺牲自己的个人利益,不
  38. :: 能象猪一样,只知享乐。而是要象革命先烈那
  39. :: 样抛头颅,洒热血,为人民的共同利益,牺牲
  40. :: 自己。只有人人都这样,我国才能真正富强,
  41. :: 才能还我国以强国本色,我们大家才能过得更
  42. :: 好。不过,让人人都这么想这么做的确很难,
  43. :: 但是如果我们都能严格要求自己,切切实实做
  44. :: 到从我做起,这个宏伟的目标终究有一天是会
  45. :: 实现的。
  46. ::   大的理想,如果能从小事入手,从小事做
  47. :: 起,便容易成功很多。所以,如果没有行动,
  48. :: 只是有崇高的理想是没有用的。我们需要随时
  49. :: 保持头脑的清醒,对自己不能放松,道德要求
  50. :: 铭记脑海。大家都能这样,我们的祖国怎能不
  51. :: 强大呢?
  52. @echo off&color 1f&mode con cols=45 lines=20
  53. setlocal enabledelayedexpansion
  54. :begin
  55. cls&set select=&echo.&set /p select=请选择阅读方式:(1.正常阅读 2.搞笑阅读)
  56. if "%select%" neq "1" if "%select%" neq "2" cls&echo.&echo 请正确选择。&ping /n 2 127.1>nul&goto begin
  57. cls&echo.
  58. if %select% equ 2 echo 现在阅读原文每行第三个字,每段空出的行头算两个字。&ping /n 3 127.1>nul&cls&echo.
  59. for /f "delims=:" %%i in (%~fs0) do (
  60.     set str=%%i&set /a n+=1
  61.     if !n! lss 52 (
  62.        if %select% equ 1 (
  63.           call :lp
  64.           ) else (
  65.           set /p=!str:~3,1!<nul
  66.           call :delay
  67.           set /a m+=1
  68.           if !m! equ 20 set m=0&echo.&echo.
  69. )))
  70. pause>nul&goto :eof
  71. :delay
  72. for /l %%i in (1,1,200) do vol>nul
  73. goto :eof
  74. :lp
  75. set a=%str:~,1%
  76. set /p=%a%<nul
  77. call :delay
  78. if "%str:~1%" neq "" set str=%str:~1%&goto lp
  79. echo.&echo.
复制代码

[ 本帖最后由 baiyuheitu 于 2009-4-29 15:35 编辑 ]
1

评分人数

    • batman: 感谢主动给标题标注[已解决]字样PB + 2

 资料是有后来的人写的,表达不一定精确,有的本就是根据英文资料写翻译的,还有个翻译是否准确的问题。其实,主要应该看语句实际运行的结果。我觉得你可以这样理解:分隔符是分割内容的,你所举的例子中,每一行分号前或二个分号中间没有内容,不存在分割的问题。分号是分割符,不是被分割的对象,你例子中每一行要分割的内容是从第二个分号开始的,包括之后的空格、文字、其他标点符号,而这些内容中间没有分号,所以你用分号分割的话,就只能得到1列值。

[ 本帖最后由 shqf 于 2009-4-29 13:50 编辑 ]
1

评分人数

TOP

回复 3楼 的帖子

“资料”不可尽信,自己做做试验就出来结论了。
^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2楼 的帖子

有一点明白,但是我看有些资料上说,默认取第一列,是不是第一列的前提必须为非空列啊?

[ 本帖最后由 baiyuheitu 于 2009-4-29 13:13 编辑 ]

TOP

要这样来看:
::   我在这个世界上生活了十几年,虽总在加
分隔符+分隔符+我在这个世界上生活了十几年,虽总在加
后面的我在这个世界上生活了十几年,虽总在加不就是第列吗?
***共同提高***

TOP

返回列表