Board logo

标题: [文本处理] [已解决]批处理文件内容怎么样只跳出一个for循环 [打印本页]

作者: wxr0514    时间: 2011-11-14 22:27     标题: [已解决]批处理文件内容怎么样只跳出一个for循环

本帖最后由 wxr0514 于 2011-11-15 21:43 编辑

里面替换内容的部分是没问题了,现在是想批量处理txt文件,试不出来,菜鸟每走一步都好难呀
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%t in (*.txt) do (
  3. for /f "skip=4 tokens=2 delims=|" %%i in ("%%t")  do (
  4. set baodanghao=%%i
  5. for /f "delims="  %%x in ("%%t") do (
  6. set newtxt=%%x
  7. for %%n in (!baodanghao!) do set newtxt=!newtxt:%%n=000000123!
  8. echo !newtxt!>>c.txt
  9. )
  10. move /y c.txt "%%t"
  11. pause
  12. goto :eof
  13. )
  14. )
复制代码

作者: CrLf    时间: 2011-11-14 22:41

你到底想表达什么?我想没多少人有耐心慢慢看代码猜楼主的意图
作者: wxr0514    时间: 2011-11-14 22:52

回复 2# CrLf


    截取txt文件里的一个字段,字段出现的第一个位置在"skip=4 tokens=2 delims=|",替换文件中所有的该字段为000000123,我试了后只能修改一个txt文件,不能批处理一个目录下的所有txt文件,因为goto :eof就直接跳出了,有什么方法只是跳出一个for循环呢
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%t in (*.txt) do (
  3. set txt=%%~nxt
  4. for /f "skip=4 tokens=2 delims=|" %%i in (!txt!)  do (
  5. set baodanghao=%%i
  6. for /f "delims="  %%x in (!txt!) do (
  7. set newtxt=%%x
  8. for %%n in (!baodanghao!) do set newtxt=!newtxt:%%n=000000123!
  9. echo !newtxt!>>c.txt
  10. )
  11. move /y c.txt !txt!
  12. pause
  13. goto :eof
  14. )
  15. )
复制代码

作者: CrLf    时间: 2011-11-14 23:08

回复 3# wxr0514


    请把具体要求更新到顶楼...
    for 循环无法打断,但循环过程中可以用变量控制操作的流程,比如:
  1. @echo off
  2. for /l %%a in (1 1 5) do (
  3.     set str=
  4.     for /l %%b in (1 1 100) do (
  5.         if not defined str echo 第 %%a 轮外循环,第 %%b 轮内循环
  6.         if %%a==%%b set str=.
  7.     )
  8. )
  9. pause
  10. ::内外循环明明共有 5*100 轮,为什么只显示了 1+2+3+4+5 轮呢?因为在不同的轮次中,依据 str 变量的状态来判断是否应该输出
复制代码

作者: wxr0514    时间: 2011-11-15 21:42

回复 4# CrLf


    谢了,按照你的方式执行成功了
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%t in (*.txt) do (
  3. set txt=%%~nxt
  4. set str=
  5. for /f "skip=4 tokens=2 delims=|" %%i in (!txt!)  do (
  6. set baodanghao=%%i
  7. if not defined str (
  8. for /f "delims="  %%x in (!txt!) do (
  9. set newtxt=%%x
  10. for %%n in (!baodanghao!) do set newtxt=!newtxt:%%n=000000123!
  11. echo !newtxt!>>c.txt
  12. )
  13. move /y c.txt !txt!
  14. )
  15. set str=1
  16. )
  17. )
  18. pause
复制代码





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