Board logo

标题: [文本处理] [已解决]求助高手这个文本格式应该怎么处理? [打印本页]

作者: jzp820927    时间: 2012-9-11 09:40     标题: [已解决]求助高手这个文本格式应该怎么处理?

本帖最后由 jzp820927 于 2012-9-11 11:08 编辑

代码如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (1.txt) do (
  4. set c=%%i
  5. echo %%i|find "-">nul&&set jg=true
  6. if "!jg!"=="true" (
  7. for /f "tokens=1,2 delims=-" %%i in ("!c!") do set one=%%i&&set two=%%j
  8. for /l %%i in (!one!,1,!two!) do echo %%i
  9. ) else (
  10. echo %%i
  11. ))
  12. pause
复制代码
1.txt 内容如下:
1
2-4
6
8
5-7
9

要输出的结果是:用for循环遍历1.txt 文件,遇到单个数字直接输出,遇到2个数字中间带-的,按递增的顺序连续输出,比如2-4,就分开输出3行 2,3,4,一直输出到1.txt 文件结尾为止。
按上面我的代码处理1.txt后,我想要的结果应该是:
1
2
3
4
6
8
5
6
7
9

但实际结果不是这样,求助高手帮忙查找代码问题所在,或者哪个高手有更好的代码实现这个功能,也不吝赐教,非常感谢!
作者: Demon    时间: 2012-9-11 09:56

  1. @echo off
  2. for /f "tokens=1-2 delims=-" %%a in (1.txt) do (
  3.     if "%%b" == "" (
  4.         echo %%a
  5.     ) else (
  6.         for /l %%i in (%%a, 1, %%b) do echo %%i
  7.     )
  8. )
  9. pause
复制代码

作者: jzp820927    时间: 2012-9-11 10:36

非常感谢,问题已经解决了!
作者: apang    时间: 2012-9-11 13:33

vbs做练习...
  1. Set FSO = CreateObject("Scripting.FileSystemObject")
  2. Set File = FSO.OpenTextFile("1.txt",1)
  3. Do Until File.AtEndOfStream
  4.    strLine = File.ReadLine
  5.    If strLine = Replace(strLine,"-","") Then
  6.       strOut = strOut & strLine & vbCrLf
  7.    Else
  8.       Arr = Split(strLine,"-")
  9.       For i = Arr(0) To Arr(1)
  10.          strOut = strOut & i & vbCrLf
  11.       Next
  12.    End If
  13. Loop
  14. 'FSO.CreateTextFile("2.txt",True).Write strOut
  15. MsgBox strOut
复制代码

作者: jzp820927    时间: 2012-9-12 00:03

都是牛人啊,感觉还是BAT方便些!




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