Board logo

标题: [文本处理] [已解决]批处理如何逐行读取文本的内容 [打印本页]

作者: er8852973    时间: 2011-4-7 07:06     标题: [已解决]批处理如何逐行读取文本的内容

本帖最后由 pcl_test 于 2016-12-20 02:00 编辑

大家好 我想用if语句确认每一行字符窜的结尾或者说是回车键  用什么字符表示呢
作者: hfg1977    时间: 2011-4-7 08:06

  1. ::=======================获得字符串长度==============================
  2. ::返回值在中%strlen%
  3. :getStrLen mystr
  4. set "mystr=%~1"&set "strlen=0"
  5. if not defined mystr goto :eof
  6. for /l %%i in (0,1,8191) do (set strlen=%%i&if "!mystr:~%%i,1!"=="" (goto :eof))
  7. goto :eof
  8. ::==============END======获得字符串长度========== by hf-g ===========
复制代码
在这里可以看到当 "字符"==""时,就到了字符串的结尾,也可以是行尾.

另:我们知道回车符由换行(LF ,\n) 和回车(CR,\r) 两个不看见字符(VB中  Chr(10) & Chr(13))组成,可以用debug或第三方工具如sed具体确定,具体顺序是0D 0A.

findstr,sed等工具中用 $ 表示行尾,^表示行的开头. if语句没什么好方法.
作者: wc726842270    时间: 2011-4-7 08:30

LZ有什么思路可以说一下,大家一起计论一下
作者: er8852973    时间: 2011-4-7 17:57

我的思路就是 那这么说吧 我把我的代码让大家看看 看到我的代码就知道我的思路了啊
@echo off
setlocal EnableDelayedExpansion
for /f "delims=enter" %%i in (hh.txt) do (
set a=%%i
for   %%i in (!a!) do (
set b=!a:~0,2!
echo !b!
set a=!a:~3!
)
pause>nul
)
pause
  hh.txt就是随便的内容 没什么实际意义
作者: er8852973    时间: 2011-4-7 17:58

但我执行后没达到我的要求 不知道错在哪里 请帮我看看呗
作者: hfg1977    时间: 2011-4-7 19:46

for /f "delims=enter" %%i in (hh.txt) do (
.......

这个命令本身就是个"笑话"呀, "enter"仅仅是5个字母而已和"abcde"没有本质分别.
看来你把"enter"当作回车了,想以此分割.

其实写bat要从计数机原理学起的,for命令你还没螚清楚.
2楼我已经告诉你了
另:我们知道回车符由换行(LF ,\n) 和回车(CR,\r) 两个不看见字符(VB中  Chr(10) & Chr(13))组成,可以用debug或第三方工具如sed具体确定,具体顺序是0D 0A.

作者: er8852973    时间: 2011-4-8 19:31

哦 知道了啊




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2