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

[文本处理] [已解决]批处理怎样从文件循环读取字段,替换另一文件中指定字段?

本帖最后由 BatAli 于 2014-9-28 17:49 编辑

现在有这么一个需求:有两个文件
文件A的内容类似于Key=vaule形式如:
aaa=111
bbb=222
ccc=333
......

文件B的内容类似于下面:
asdfasdgasdfa
version=1.0
versionCode=22
num=000

现在想通过循环读取A文件中vaule(111,222,333等)来替换B文件中num的值(000)。

执行完的结果是这样的:
A文件内容不变
    B文件替换之后会变成
    asdfasdgasdfa
    version=1.0
    versionCode=22
     num=111(A文件中aaa的值)
然后执行一些操作,现在先简单输出一个字符串标记一下。(遍历一次执行一次,执行内容相同)
接着循环A文件执行后B文件会变成
asdfasdgasdfa
version=1.0
versionCode=22
num=222(A文件中bbb的值)
然后执行一些操作,现在先简单输出一个字符串标记一下。(遍历一次执行一次,执行内容相同)
以此类推,直到A文件遍历完。

小弟新手,请各位大侠多多指教,在此先谢过了!

按照顶楼的数据,替换之后希望得到什么样的结果?

TOP

本帖最后由 牛虻 于 2014-9-28 11:17 编辑

回复 2# DAIC


    我看错了,我这个是修改一个文件中的内容。
不能做两个文件间的字符替换
不过我现在认真一看,没看懂LZ具体怎么替换
菩提本无树,明镜亦非台。
本是无一物,何处惹尘埃。

TOP

回复 2# DAIC


    A文件内容不变
    B文件替换之后会变成
    asdfasdgasdfa
    version=1.0
    versionCode=22
     num=111(A文件中aaa的值)
然后执行一些操作,现在先简单输出一个字符串标记一下。(遍历一次执行一次,执行内容相同)
接着循环A文件执行后B文件会变成
asdfasdgasdfa
version=1.0
versionCode=22
num=222(A文件中bbb的值)
然后执行一些操作,现在先简单输出一个字符串标记一下。(遍历一次执行一次,执行内容相同)
以此类推,知道A文件遍历完。

TOP

回复 3# 牛虻


    谢谢牛虻,我是想循环A文件中的值,然后替换B文件中num的值
替换一次完成,执行一些固定的操作(可以先输出一个字符串标记一下),然后再循环A文件的值,来替换B文件中num的值
如此循环,知道A文件循环完。

是我表达的不太清楚,抱歉  呵呵

TOP

你试下是不是跟你的需求一样。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2 delims==" %%i in (a.txt) do (
  4. (for /f "tokens=1,2 delims==" %%j in (b.txt) do (
  5. if "%%j"=="num" (set %%k=%%i & echo %%j=!%%k!) else echo %%j=%%k
  6. ))>b_%%i.txt
  7. del b.txt
  8. ren b_%%i.txt b.txt
  9. Rem 你的代码区域开始
  10. echo ---Your Code---
  11. Rem 你的代码区域结束
  12. pause>nul
  13. )
复制代码
1

评分人数

    • BatAli: 感谢,不知道加分是不是这样操作的技术 + 1
问题解决后,请在标题前面注明[已解决],并给回答者加分——化繁为简,提高工作效率!

TOP

回复 6# Linuxer


    谢谢大师,小弟泪流满面

TOP

回复 7# BatAli


    可以用吗?
问题解决后,请在标题前面注明[已解决],并给回答者加分~~
问题解决后,请在标题前面注明[已解决],并给回答者加分——化繁为简,提高工作效率!

TOP

返回列表