标题: [文本处理] [已解决]批处理如何逐行读取文本的内容 [打印本页]
作者: er8852973 时间: 2011-4-7 07:06 标题: [已解决]批处理如何逐行读取文本的内容
本帖最后由 pcl_test 于 2016-12-20 02:00 编辑
大家好 我想用if语句确认每一行字符窜的结尾或者说是回车键 用什么字符表示呢
作者: hfg1977 时间: 2011-4-7 08:06
- ::=======================获得字符串长度==============================
- ::返回值在中%strlen%
- :getStrLen mystr
- set "mystr=%~1"&set "strlen=0"
- if not defined mystr goto :eof
- for /l %%i in (0,1,8191) do (set strlen=%%i&if "!mystr:~%%i,1!"=="" (goto :eof))
- goto :eof
- ::==============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 |