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

[文本处理] [已解决]批处理findstr /o为何无法正常显示第一行偏移量?

本帖最后由 lfoqtal 于 2011-8-9 08:27 编辑
/O        在每个匹配行前打印字符偏移量。

这句话是findstr的说明
但在实际运行中,我发现它无法正常显示文本的第一行
  1. @echo off
  2. echo 123456|findstr /o "."
  3. echo 123456>1.txt
  4. echo asdafw>>1.txt
  5. echo 45688>>1.txt
  6. findstr /o "." 1.txt
  7. pause
复制代码
可以看到在显示单个变量时,根本无法计算出偏移量,显示0:
而在显示文本时第一行也是为0:,后几行则可以正常显示只是多算了两个数是换行符所占偏移量
为什么会这样呢,
尝试了多次后发现原来是累计偏移量问题啊!
第一行显示的是起头初始值,所以是0
他并不会在最后一行显示所累计的最终值,所以显示文本时少了最后一行的值

所以/o并不是用来计算总字符偏移量的,而是用来计算本行在总文本中是从第几位偏移开始的,所以只显示头不显示尾
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
通用简洁实用就是批处理精神

计算单个变量长度的方法
  1. @echo off
  2. :1
  3. set /p p=
  4. for /f "delims=:" %%a in ('(echo.%p%^&echo.1^) ^|findstr /o "."') do set /a a=%%a-3
  5. echo %a%个字符
  6. pause>nul
  7. goto :1
复制代码
但在这里就不明白了.
为什么要-3而不是-2??
通用简洁实用就是批处理精神

TOP

回复 6# hanyeguxing


    原来如此,我都忘了|管道会在句尾加个空格这件事了
通用简洁实用就是批处理精神

TOP

返回列表