标题: [文本处理] [已解决]批处理文件内容怎么样只跳出一个for循环 [打印本页]
作者: wxr0514 时间: 2011-11-14 22:27 标题: [已解决]批处理文件内容怎么样只跳出一个for循环
本帖最后由 wxr0514 于 2011-11-15 21:43 编辑
里面替换内容的部分是没问题了,现在是想批量处理txt文件,试不出来,菜鸟每走一步都好难呀- @echo off&setlocal enabledelayedexpansion
- for %%t in (*.txt) do (
-
- for /f "skip=4 tokens=2 delims=|" %%i in ("%%t") do (
- set baodanghao=%%i
-
- for /f "delims=" %%x in ("%%t") do (
- set newtxt=%%x
- for %%n in (!baodanghao!) do set newtxt=!newtxt:%%n=000000123!
- echo !newtxt!>>c.txt
- )
- move /y c.txt "%%t"
- pause
- goto :eof
- )
- )
复制代码
作者: 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循环呢- @echo off&setlocal enabledelayedexpansion
- for %%t in (*.txt) do (
- set txt=%%~nxt
-
- for /f "skip=4 tokens=2 delims=|" %%i in (!txt!) do (
- set baodanghao=%%i
-
- for /f "delims=" %%x in (!txt!) do (
- set newtxt=%%x
- for %%n in (!baodanghao!) do set newtxt=!newtxt:%%n=000000123!
- echo !newtxt!>>c.txt
-
- )
- move /y c.txt !txt!
- pause
- goto :eof
- )
- )
复制代码
作者: CrLf 时间: 2011-11-14 23:08
回复 3# wxr0514
请把具体要求更新到顶楼...
for 循环无法打断,但循环过程中可以用变量控制操作的流程,比如:- @echo off
- for /l %%a in (1 1 5) do (
- set str=
- for /l %%b in (1 1 100) do (
- if not defined str echo 第 %%a 轮外循环,第 %%b 轮内循环
- if %%a==%%b set str=.
- )
- )
- pause
- ::内外循环明明共有 5*100 轮,为什么只显示了 1+2+3+4+5 轮呢?因为在不同的轮次中,依据 str 变量的状态来判断是否应该输出
复制代码
作者: wxr0514 时间: 2011-11-15 21:42
回复 4# CrLf
谢了,按照你的方式执行成功了- @echo off&setlocal enabledelayedexpansion
- for %%t in (*.txt) do (
- set txt=%%~nxt
- set str=
-
- for /f "skip=4 tokens=2 delims=|" %%i in (!txt!) do (
- set baodanghao=%%i
- if not defined str (
- for /f "delims=" %%x in (!txt!) do (
- set newtxt=%%x
- for %%n in (!baodanghao!) do set newtxt=!newtxt:%%n=000000123!
- echo !newtxt!>>c.txt
- )
- move /y c.txt !txt!
- )
- set str=1
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |