找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 80171|回复: 26

[文件操作] 【已解决】BAT批处理如何查找文件并添加内容?

[复制链接]
发表于 2014-4-22 18:07:39 | 显示全部楼层 |阅读模式
本帖最后由 fsxhome 于 2014-4-22 22:01 编辑

我近期在封装一个安装包,过程中需要在指定的xml文件中添加内容,特来请大侠们,帮写个批处理,好封装进去运行,先拜谢各位了!!

具体要求:
1、先查找“dll.xml文件”
64位系统中,文件位于“C:\Users\用户\AppData\Roaming\Microsoft\FSX”;
XP系统中,文件位于“C:\Documents and Settings\用户名\Application Data\Microsoft\FSX”

2、在"</SimBase.Document>"这一行之前,插入下列内容:
  <Launch.Addon>
    <Name>FSCopilot</Name>
    <Disabled>False</Disabled>
    <Path>Modules\FSCopilot.dll</Path>
  </Launch.Addon>
3、完成之后,在文件中,显示是这个样子的:

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-4-22 19:04:48 | 显示全部楼层
  1. @echo off
  2. set "s=  <Launch.Addon>#    <Name>FSCopilot</Name>#    <Disabled>False</Disabled>#    <Path>Modules\FSCopilot.dll</Path>#  </Launch.Addon>"
  3. for /f "delims=" %%i in (dll.xml) do (
  4.     set "str=%%i"
  5.     setlocal enabledelayedexpansion
  6.     if "!str: =!" == "</SimBase.Document>" (
  7.        echo !s:#=^

  8. !)
  9.     echo !str!
  10.     endlocal
  11. )
  12. pause
复制代码
 楼主| 发表于 2014-4-22 19:34:35 | 显示全部楼层
本帖最后由 fsxhome 于 2014-4-22 19:43 编辑

额  太感谢了  测试下去

测试情况:
首先,非常感谢!

但测试不成功,运行bat,在bat内,可以看见字段添加进去了,但打开“dll.xml”却发现里面没内容。

另外,还缺少自动查找文件的命令。我是把BAT文件,打包到安装程序中运行,所以,这个BAT放不到“dll.xml所在的文件夹”。
发表于 2014-4-22 19:52:27 | 显示全部楼层
  1. @echo off
  2. set "s=  <Launch.Addon>#    <Name>FSCopilot</Name>#    <Disabled>False</Disabled>#    <Path>Modules\FSCopilot.dll</Path>#  </Launch.Addon>"
  3. (for /f "delims=" %%i in (dll.xml) do (
  4.     set "str=%%i"
  5.     setlocal enabledelayedexpansion
  6.     if "!str: =!" == "</SimBase.Document>" (
  7.        echo !s:#=^

  8. !)
  9.     echo !str!
  10.     endlocal
  11. ))>dll.xml.new
  12. move /y dll.xml.new dll.xml
复制代码
 楼主| 发表于 2014-4-22 19:58:31 | 显示全部楼层
回复 4# DAIC

非常感谢!

代码可用,可完成操作,但添加的字段,格式不正确,要求和我发帖里面一样换行,空格啥的才行。

另外,还是不能自动查找文件。
发表于 2014-4-22 20:16:58 | 显示全部楼层
  1. @echo off
  2. (for /f "delims=" %%i in (a.txt) do (
  3.     set "str=%%i"
  4.     setlocal enabledelayedexpansion
  5.     if "!str: =!" == "</SimBase.Document>" (
  6.         echo  ^<Launch.Addon^>
  7.         echo    ^<Name^>FSCopilot^</Name^>
  8.         echo    ^<Disabled^>False^</Disabled^>
  9.         echo    ^<Path^>Modules\FSCopilot.dll^</Path^>
  10.         echo  ^</Launch.Addon^>
  11.     )
  12.     echo !str!
  13.     endlocal
  14. ))>b.txt
复制代码
 楼主| 发表于 2014-4-22 20:22:53 | 显示全部楼层
回复 6# DAIC

辛苦了,非常感谢!

这样操作,文件直接变成了空文件。。。
发表于 2014-4-22 20:24:16 | 显示全部楼层
  1. @echo off
  2. (for /f "delims=" %%i in (dll.xml) do (
  3.     set "str=%%i"
  4.     setlocal enabledelayedexpansion
  5.     if "!str: =!" == "</SimBase.Document>" (
  6.         echo  ^<Launch.Addon^>
  7.         echo    ^<Name^>FSCopilot^</Name^>
  8.         echo    ^<Disabled^>False^</Disabled^>
  9.         echo    ^<Path^>Modules\FSCopilot.dll^</Path^>
  10.         echo  ^</Launch.Addon^>
  11.     )
  12.     echo !str!
  13.     endlocal
  14. ))>dll.xml.new
  15. move /y dll.xml.new dll.xml
复制代码
 楼主| 发表于 2014-4-22 20:32:10 | 显示全部楼层
回复 8# DAIC

非常感谢,成功了。

接下来,要解决的问题,是先要查到"DLL.XML"所在的位置,再执行这段代码。
发表于 2014-4-22 20:36:55 | 显示全部楼层
  1. @echo off
  2. if exist "C:\Users\%username%\AppData\Roaming\Microsoft\FSX\dll.xml" (
  3.     set "file=C:\Users\%username%\AppData\Roaming\Microsoft\FSX\dll.xml"
  4. ) else if exit "C:\Documents and Settings\%username%\Application Data\Microsoft\FSX\dll.xml" (
  5.     set "file=C:\Documents and Settings\%username%\Application Data\Microsoft\FSX\dll.xml"
  6. ) else (
  7.     echo 找不到文件 dll.xml
  8.     pause
  9.     exit
  10. )
  11. (for /f "usebackq delims=" %%i in ("%file%") do (
  12.     set "str=%%i"
  13.     setlocal enabledelayedexpansion
  14.     if "!str: =!" == "</SimBase.Document>" (
  15.         echo  ^<Launch.Addon^>
  16.         echo    ^<Name^>FSCopilot^</Name^>
  17.         echo    ^<Disabled^>False^</Disabled^>
  18.         echo    ^<Path^>Modules\FSCopilot.dll^</Path^>
  19.         echo  ^</Launch.Addon^>
  20.     )
  21.     echo !str!
  22.     endlocal
  23. ))>dll.xml.new
  24. move /y dll.xml.new dll.xml
复制代码
 楼主| 发表于 2014-4-22 20:44:08 | 显示全部楼层
回复 10# DAIC


    辛苦您了!

   我在桌面和文件所在的文件夹,都试了下,都是一闪而退,无任何提示,检查文件,发现不成功。
发表于 2014-4-22 21:01:24 | 显示全部楼层
回复 11# fsxhome


    不要双击执行,去CMD窗口里面执行,看看是哪一行在报错。
 楼主| 发表于 2014-4-22 21:14:47 | 显示全部楼层
回复 12# DAIC


    大侠,您有QQ吗,我水平查,试了好几种方法,没能在CMD窗口中运行起来BAT,可否加QQ请教您呢?
发表于 2014-4-22 21:15:25 | 显示全部楼层
回复 13# fsxhome


开始
运行
cmd
C:\test.bat
 楼主| 发表于 2014-4-22 21:17:45 | 显示全部楼层
开始我还以为运行错了呢,我是WIN8.1的系统,提示这个。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 03:09 , Processed in 0.023329 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表