标题: [文本处理] [已解决]批处理分隔符截取文本时与理论不符 [打印本页]
作者: baiyuheitu 时间: 2009-4-28 18:59 标题: [已解决]批处理分隔符截取文本时与理论不符
下面将文字的前面加:: 然后用for命令读取,我试了一下,发现以:为分隔符(即delims=:),进行命令
for /f "delims=:" %%i in (%~fs0) do echo %%i 结果显示正文只少了:: 为啥显示的内容是分割符后的,不是
默认显示分隔符前的第一部分吗???- :: 我在这个世界上生活了十几年,虽总在加
- :: 强情操的培养,但是有的时候,仍然很难做一
- :: 些性命悠关的大决定。生存,还是毁灭,这是
- :: 个问题。莎士比亚的这个疑问困扰了古代无数
- :: 的哲人。
- :: 他人的利益重要,还是自己的利益重要?
- :: 为了祖国是不是该牺牲个人的利益?为人民服
- :: 务的宗旨是不是要坚持?这是我们的品德教育
- :: 用了十年,才使我们彻底弄清的问题。革命先
- :: 烈用八年抗战,为我们做出了最好的回答。我
- :: 们这代人是跨世纪的一代,将来会面对更多的
- :: 诱惑。正因为如此,我们必须从小就树立一切
- :: 为了他人的崇高信念。
- :: 生命是人最宝贵的财富,但是在重要的时
- :: 候,个人利益必须牺牲。罗胜教在刺骨的冰水
- :: 中救孩子,这是他心灵的选择。他牺牲自己,
- :: 让孩子的生命得到延续。而在我们的生活中,
- :: 大多没有这么极端的情况。但也不能有一点危
- :: 险就屁滚尿流。做出牺牲自己的选择,不只是
- :: 象用眼睛看来那么简单的。我们必须时时反省
- :: 自己,只有时刻严格要求自己,才可能成为一
- :: 个完整的人。
- :: 个人的利益首先还要服从集体利益,就像
- :: 当年一个人再怎么成功,其力量也不能改变国
- :: 家孱弱的现实。个人的智慧再强大,也比不上
- :: 集体智慧。是全中国人民集体才改变了我国一
- :: 穷二白的面貌,是千千万万劳动中国人民艰苦
- :: 奋斗痴心不悔,才建成了我们的国家,有人说
- :: 雷锋傻,我们就要做革命的傻子,每天用雷锋
- :: 事迹逼迫自己努力向上。但这其实非常难,人
- :: 不是神,做出牺牲自己的决定,内心斗争是必
- :: 然要经历的。这是,我们必须提高觉悟,尽量
- :: 排除病态的极端个人主义思想干扰,严格要求
- :: 自己,做出正确的心灵选择。
- :: 一个人的力量微不足道,经常无法实现宏
- :: 伟目标。所以如果想要社会进步,我们必需要
- :: 时刻准备,甚至不惜牺牲自己的个人利益,不
- :: 能象猪一样,只知享乐。而是要象革命先烈那
- :: 样抛头颅,洒热血,为人民的共同利益,牺牲
- :: 自己。只有人人都这样,我国才能真正富强,
- :: 才能还我国以强国本色,我们大家才能过得更
- :: 好。不过,让人人都这么想这么做的确很难,
- :: 但是如果我们都能严格要求自己,切切实实做
- :: 到从我做起,这个宏伟的目标终究有一天是会
- :: 实现的。
- :: 大的理想,如果能从小事入手,从小事做
- :: 起,便容易成功很多。所以,如果没有行动,
- :: 只是有崇高的理想是没有用的。我们需要随时
- :: 保持头脑的清醒,对自己不能放松,道德要求
- :: 铭记脑海。大家都能这样,我们的祖国怎能不
- :: 强大呢?
- @echo off&color 1f&mode con cols=45 lines=20
- setlocal enabledelayedexpansion
- :begin
- cls&set select=&echo.&set /p select=请选择阅读方式:(1.正常阅读 2.搞笑阅读)
- if "%select%" neq "1" if "%select%" neq "2" cls&echo.&echo 请正确选择。&ping /n 2 127.1>nul&goto begin
- cls&echo.
- if %select% equ 2 echo 现在阅读原文每行第三个字,每段空出的行头算两个字。&ping /n 3 127.1>nul&cls&echo.
- for /f "delims=:" %%i in (%~fs0) do (
- set str=%%i&set /a n+=1
- if !n! lss 52 (
- if %select% equ 1 (
- call :lp
- ) else (
- set /p=!str:~3,1!<nul
- call :delay
- set /a m+=1
- if !m! equ 20 set m=0&echo.&echo.
- )))
- pause>nul&goto :eof
- :delay
- for /l %%i in (1,1,200) do vol>nul
- goto :eof
- :lp
- set a=%str:~,1%
- set /p=%a%<nul
- call :delay
- if "%str:~1%" neq "" set str=%str:~1%&goto lp
- echo.&echo.
复制代码
[ 本帖最后由 baiyuheitu 于 2009-4-29 15:35 编辑 ]
作者: batman 时间: 2009-4-29 00:19
要这样来看:
:: 我在这个世界上生活了十几年,虽总在加
分隔符+分隔符+我在这个世界上生活了十几年,虽总在加
后面的我在这个世界上生活了十几年,虽总在加不就是第列吗?
作者: baiyuheitu 时间: 2009-4-29 12:59 标题: 回复 2楼 的帖子
有一点明白,但是我看有些资料上说,默认取第一列,是不是第一列的前提必须为非空列啊?
[ 本帖最后由 baiyuheitu 于 2009-4-29 13:13 编辑 ]
作者: Batcher 时间: 2009-4-29 13:27 标题: 回复 3楼 的帖子
“资料”不可尽信,自己做做试验就出来结论了。
^_^
作者: shqf 时间: 2009-4-29 13:48
资料是有后来的人写的,表达不一定精确,有的本就是根据英文资料写翻译的,还有个翻译是否准确的问题。其实,主要应该看语句实际运行的结果。我觉得你可以这样理解:分隔符是分割内容的,你所举的例子中,每一行分号前或二个分号中间没有内容,不存在分割的问题。分号是分割符,不是被分割的对象,你例子中每一行要分割的内容是从第二个分号开始的,包括之后的空格、文字、其他标点符号,而这些内容中间没有分号,所以你用分号分割的话,就只能得到1列值。
[ 本帖最后由 shqf 于 2009-4-29 13:50 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |