【问题标题】:Bat file that alters specific xml element optimization [closed]更改特定 xml 元素优化的 Bat 文件 [关闭]
【发布时间】:2016-11-13 17:40:48
【问题描述】:

我有一个批处理脚本,用于将 httpTransport 元素更新为 httpsTransport 以获取特定绑定名称,在我的例子中:CustomBinaryBinding。 我怎样才能以更优雅和有效的方式编写它。

bat 文件:

@echo off
setlocal enabledelayedexpansion 
set "search=httpTransport"
set "replace=httpsTransport"
set "bindingName=CustomBinaryBinding"
set INTEXTFILE=C:\Users\tudor\Desktop\batch\web.config
set OUTTEXTFILE=C:\Users\tudor\Desktop\batch\webTemp.config    
echo start
(for /f "delims=" %%i in (!INTEXTFILE!) do (
    set "line=%%i"
    for /f tokens^=1^,2^,3^ delims^=^<^"^= %%a in ("%%i") do (  
        if "%%b" equ "binding name" if "%%c" equ "CustomBinaryBinding" (
            set "insideCorrectBinding=y"
            )                              
        for /f "delims= " %%m in ("%%b") do (
            if "%%m" equ "httpTransport" (              
            set "onCorrectLine=y"                                                                               
            )
        )
    )
    if !insideCorrectBinding! equ y if !onCorrectLine! equ y (
        set "line=!line:%search%=%replace%!"  
        set "onCorrectLine="      
        set "insideCorrectBinding="
    )            
    echo(!line!                 
    )
)>"%OUTTEXTFILE%"

web.config:

<configuration>          
    <system.serviceModel>          
        <bindings>          
            <customBinding>          
                <binding name="CustomBinaryBinding">          
                  <binaryMessageEncoding />          
                  <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />          
                </binding>          
            </customBinding>      
            <customBinding>          
                <binding name="CustomBinaryBinding2">          
                  <binaryMessageEncoding />          
                  <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />          
                </binding>          
            </customBinding>                
        </bindings>          
        <client>          
          <endpoint address="../../PlatformAdminUtil.svc"          
               binding="customBinding" bindingConfiguration="CustomBinaryBinding"          
               contract="PlatformAdminUtil.PlatformAdminUtil" name="CustomBinding_PlatformAdminUtil" />          
          <endpoint address="../../EntityAccess.svc"          
                binding="customBinding" bindingConfiguration="CustomBinaryBinding"          
                contract="PlatformEntityAccess.EntityAccess" name="CustomBinding_EntityAccess" />          
          <endpoint address="../../EntityAdminAccess.svc"          
                binding="customBinding" bindingConfiguration="CustomBinaryBinding"          
                contract="PlatformEntityAdminAccess.EntityAdminAccess" name="CustomBinding_EntityAdminAccess" />          
          <endpoint address="../../LogErrorService.svc"          
               binding="customBinding" bindingConfiguration="CustomBinaryBinding"          
               contract="LoggerService.LogErrorService" name="CustomBinding_LogErrorService" />          
        </client>          
    </system.serviceModel>          
</configuration>          

【问题讨论】:

  • 对我来说看起来不错。你觉得它有什么问题?

标签: xml batch-file config


【解决方案1】:
if !insideCorrectBinding! equ y if !onCorrectLine! equ y (

应该是

if defined insideCorrectBinding if  defined onCorrectLine (

如果这些设置,则代码被解释为

if equ y if equ y (

应该会产生错误。

由于这些变量只能设置为nothingy,那么if defined是一种合适的查询机制

【讨论】:

    猜你喜欢
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2019-12-28
    • 1970-01-01
    • 2021-10-08
    相关资源
    最近更新 更多