Board logo

标题: [文本处理] [已解决]批处理怎样替换文件某些字段? [打印本页]

作者: wxr0514    时间: 2011-11-13 21:41     标题: [已解决]批处理怎样替换文件某些字段?

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "skip=4 tokens=2,2 delims=|" %%i in (Data201110090064011.txt) do (
  3. set baodanghao=%%i
  4. for /f "delims="  %%x in (Data201110090064011.txt) do (
  5. set newtxt=%%x
  6. set newtxt=!newtxt: baodanghao=000000123!
  7. echo !newtxt!>>c.txt
  8. )
  9. move c.txt Data201110090064011.txt
  10. pause
  11. goto :eof
  12. )
  13. PAUSE
复制代码
为什么替换不成功呢,第一个for是把搜索到的第一个字段给baodanghao, 第二个for 是文件里字段与baodanghao值一样的字段用000000123的字段代替。本来想这样能替换成功后,再想办法批量处理文件,因为这里还只是特定的一个文件
作者: weichenxiehou    时间: 2011-11-13 22:12

回复 1# wxr0514
请将代码用括起来,配合论坛管理。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "skip=4 tokens=2 delims=|" %%i in (Data201110090064011.txt) do (
  3. set baodanghao=%%i
  4. for /f "delims="  %%x in (Data201110090064011.txt) do (
  5. set newtxt=%%x
  6. for %%n in (!baodanghao!) do set newtxt=!newtxt:%%n=000000123!
  7. echo !newtxt!>>c.txt
  8. )
  9. move /y c.txt Data201110090064011.txt
  10. pause
  11. goto :eof
  12. )
复制代码

作者: abcdshenji    时间: 2011-11-13 22:17

检查这个:
  1. set newtxt=!newtxt: baodanghao=000000123!
复制代码
发现问题了吗?
作者: wxr0514    时间: 2011-11-13 22:25

回复 2# weichenxiehou


    可行了,真牛!呵呵我是初学者,今天想了一天都解决不了,佩服。
作者: wxr0514    时间: 2011-11-13 22:28

回复 3# abcdshenji


    这样系统是把“baodanghao"当做字符串而不是变量,本来也试过把baodanghao两边加上%,也不行,
作者: abcdshenji    时间: 2011-11-13 22:38

回复 5# wxr0514


    你还是没发现问题。baodanghao还在第一层for里面加%当然不行。。
作者: wxr0514    时间: 2011-11-14 20:07

回复 6# abcdshenji


    这么说变量只能在哪个for里设定的就只能在哪个for里面用了,原来我是用C语言的思维来思考的,变量只要设定了就都可以用了
作者: Hello123World    时间: 2011-11-15 16:52

set newtxt=!newtxt: baodanghao=000000123!

改为
  1. call set newtxt=%%newtxt: !baodanghao!=000000123%%
复制代码





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