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

[文本处理] [已解决]求助高手这个文本格式应该怎么处理?

本帖最后由 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

但实际结果不是这样,求助高手帮忙查找代码问题所在,或者哪个高手有更好的代码实现这个功能,也不吝赐教,非常感谢!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  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
复制代码
1

评分人数

    • jzp820927: 代码简洁,学习了!技术 + 1

TOP

非常感谢,问题已经解决了!

TOP

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
复制代码
1

评分人数

TOP

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

TOP

返回列表