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

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

本帖最后由 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、完成之后,在文件中,显示是这个样子的:
1

评分人数

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

  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
复制代码

TOP

本帖最后由 fsxhome 于 2014-4-22 19:43 编辑

额  太感谢了  测试下去

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

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

另外,还缺少自动查找文件的命令。我是把BAT文件,打包到安装程序中运行,所以,这个BAT放不到“dll.xml所在的文件夹”。

TOP

  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
复制代码

TOP

回复 4# DAIC

非常感谢!

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

另外,还是不能自动查找文件。

TOP

  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
复制代码

TOP

回复 6# DAIC

辛苦了,非常感谢!

这样操作,文件直接变成了空文件。。。

TOP

  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
复制代码

TOP

回复 8# DAIC

非常感谢,成功了。

接下来,要解决的问题,是先要查到"DLL.XML"所在的位置,再执行这段代码。

TOP

  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
复制代码

TOP

回复 10# DAIC


    辛苦您了!

   我在桌面和文件所在的文件夹,都试了下,都是一闪而退,无任何提示,检查文件,发现不成功。

TOP

回复 11# fsxhome


    不要双击执行,去CMD窗口里面执行,看看是哪一行在报错。

TOP

回复 12# DAIC


    大侠,您有QQ吗,我水平查,试了好几种方法,没能在CMD窗口中运行起来BAT,可否加QQ请教您呢?

TOP

回复 13# fsxhome


开始
运行
cmd
C:\test.bat

TOP

开始我还以为运行错了呢,我是WIN8.1的系统,提示这个。

TOP

返回列表