Batch file 如何使用批处理文件脚本编辑web.config文件内容?

Batch file 如何使用批处理文件脚本编辑web.config文件内容?,batch-file,Batch File,您好,在部署到IIS服务器之前,我需要使用批处理文件脚本编辑web.cofig文件。下面是我的示例web.config文件 <?xml version="1.0"?> <configuration> <system.webServer> <staticContent> <remove fileExtension=".json"/> <mimeMap fileExtension=".json" m

您好,在部署到IIS服务器之前,我需要使用批处理文件脚本编辑web.cofig文件。下面是我的示例web.config文件

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <staticContent>
      <remove fileExtension=".json"/>
      <mimeMap fileExtension=".json" mimeType="application/json"/>
    </staticContent>
    <defaultDocument>
      <files>
        <clear/>
        <add value="Default.htm"/>
        <add value="Default.asp"/>
        <add value="index.htm"/>
        <add value="index.html"/>
        <add value="iisstart.htm"/>
        <add value="index.aspx"/>
        <add value="default.aspx"/>
      </files>
    </defaultDocument>
  </system.webServer>
  <appSettings>
    <add key="version" value=""/>
  </appSettings>
  <system.web>
    <!--<trace enabled="true" pageOutput="false" requestLimit="20" mostRecent="true" localOnly="false"/>-->
    <compilation targetFramework="4.0" debug="true">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
  </system.web>
  <location path="bi-aws-proxy.ashx">
    <system.web>
      <httpRuntime requestValidationMode="2.0"/>
    </system.web>
  </location>
</configuration>

然后我想要输出web.config文件,其中的行编辑如下

<add key="version" value="1267"/>

我尝试了下面的代码,我在互联网上得到的,但没有正常工作

@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "param=%1"
echo %param%
set "INTEXTFILE=web.config"
set "OUTTEXTFILE=test_out.txt"
set "SEARCHTEXT=<add key="version" value=""/>"
set "REPLACETEXT="<add key="version" value="%param%"/>"

for /f "delims=" %%A in ('type "%INTEXTFILE%"') do (
    set "string=%%A"
    set "modified=!string:%SEARCHTEXT%=%REPLACETEXT%!"
    echo !modified!>>"%OUTTEXTFILE%"
)

del "%INTEXTFILE%"
rename "%OUTTEXTFILE%" "%INTEXTFILE%"
endlocal
@echo关闭
setlocal EnableExtensions EnableDelayedExpansion
设置“参数=%1”
回显%param%
设置“INTEXTFILE=web.config”
设置“OUTTEXTFILE=test\u out.txt”
设置“SEARCHTEXT=”
设置“REPLACETEXT=”
对于/f“delims=“%%A in('类型“%INTEXTFILE%”)do(
设置“字符串=%%A”
设置“已修改=!字符串:%SEARCHTEXT%=%REPLACETEXT%!”
echo!已修改!>>%OUTTEXTFILE%
)
删除“%INTEXTFILE%”
重命名“%OUTTEXTFILE%”“%INTEXTFILE%”
端部
因此,在此方面的任何帮助都将不胜感激;如果可能,请提供代码片段。
提前感谢。

尝试在
cmd.exe
shell脚本(批处理)中执行此操作这不是小事。我建议改为使用PowerShell。您必须编辑现有的web.config文件吗?如果您可以接受输入,然后创建或替换整个文件,这会更容易。我不认为使用自动方法执行此任务有什么意义。毕竟,它是一个命名文件、搜索字符串的一个实例,并且在完成后只有在再次运行脚本且不带任何参数后,才能在该文件上再次使用hing。如果要将
=
/
之间的任何内容替换为
“%~1”
,则在任何与您确定为最安全的字符串模式或正则表达式相匹配的行上,这可能更有意义。