Board logo

标题: [文本处理] [已解决]批处理如何做到逐字分解函数数值? [打印本页]

作者: mxxcgzxxx    时间: 2011-4-30 09:47     标题: [已解决]批处理如何做到逐字分解函数数值?

本帖最后由 mxxcgzxxx 于 2011-4-30 10:09 编辑

有一个1.txt 内有长度不等的字符,需要读取后将其逐字分解。
我知道是用FOR语句,但应该怎么样来确定字符的长度呢?
1.txt
  1. --序---------字符--------
  2.   1          asfafwef
  3.   2          qwerqr
  4.   3          wqer
  5.   4          vavv
  6.   5          bt
  7.   6          一二三
  8.   7          天上地下
复制代码
a.bat
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :1
  4. rem 读取文档生成菜单
  5. cls
  6. echo.
  7. echo.
  8. for /f "skip=1 tokens=1,2 delims= " %%1 in (a.txt) do (echo %%1      %%2)&(set a%%1=%%2)&(set /a m=%%1+1)
  9. echo %m%      退出
  10. echo.
  11. echo.
  12. set /p p=请选择需要分解的字符:
  13. if %p%==%m% goto :eof
  14. for /l %%1 in (0,1,10) do echo !a%p%:~%%1,1!
  15. pause
  16. goto :1
复制代码

作者: Batcher    时间: 2011-4-30 09:49

参考:批处理最大限度原样输出含特殊字符的指定行内容
http://bbs.bathome.net/thread-4580-1-1.html
作者: batman    时间: 2011-4-30 09:56

论坛有n种计算字符串长度的方法,楼主可以去搜索一下。。。
作者: mxxcgzxxx    时间: 2011-4-30 10:09

谢了,版主们都很勤劳啊!呵呵
参考了下论坛,对于我这个没有特殊字符的看来关键判断下是不是输出了空值就行了
如果有特殊字符就要像一楼一样来转义了
我改了下倒数第三句FOR,加入IF判断跳转就行了,这样不会太复杂。感谢大家!
  1. for /l %%1 in (0,1,10) do (if "!a%p%:~%%1,1!"=="" goto :2)&(echo !a%p%:~%%1,1!)
  2. :2
复制代码





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