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

[文本处理] [已解决]批处理怎样替换文件某些字段?

  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的字段代替。本来想这样能替换成功后,再想办法批量处理文件,因为这里还只是特定的一个文件
1

评分人数

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

set newtxt=!newtxt: baodanghao=000000123!

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

TOP

回复 6# abcdshenji


    这么说变量只能在哪个for里设定的就只能在哪个for里面用了,原来我是用C语言的思维来思考的,变量只要设定了就都可以用了

TOP

回复 5# wxr0514


    你还是没发现问题。baodanghao还在第一层for里面加%当然不行。。

TOP

回复 3# abcdshenji


    这样系统是把“baodanghao"当做字符串而不是变量,本来也试过把baodanghao两边加上%,也不行,

TOP

回复 2# weichenxiehou


    可行了,真牛!呵呵我是初学者,今天想了一天都解决不了,佩服。

TOP

检查这个:
  1. set newtxt=!newtxt: baodanghao=000000123!
复制代码
发现问题了吗?
1

评分人数

    • CrLf: 指明关键所在PB + 5

TOP

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

评分人数

    • CrLf: 乐于助人,同时感谢维护论坛秩序PB + 5 技术 + 1
看得多说得多,远比不上写得多。

TOP

返回列表