bat文件修改web.config设置

时间:2014-08-18 14:46:10

标签: batch-file replace

我在Visual Studio 2013中创建了一个Web应用程序。我在我的Web.Config文件中有这个appSetting:

<add key="cloudVersion" value="@@NEW@@"/>

发布应用程序后,我运行一个bat文件复制已发布的目录,将今天的日期附加到目录名称,压缩更新的目录,然后将其上传到Google驱动器,以便我的团队的其他成员可以访问它。 / p>

我正在尝试使用相同的bat文件来修改 cloudVersion 设置,以便我们可以看到它何时从应用程序中发布。我有这段代码:

@echo off &setlocal
set "search=@@NEW@@"
set "replace=%yy%%mm%%dd%"
(for /f "delims=" %%i in ('findstr /n "^" "%""C:\original files\Web.config""%"') do (
    set "line=%%i"
    setlocal enabledelayedexpansion
    set "line=!line:%search%=%replace%!"
    echo(!line!
    endlocal
))>"%""C:\Publish Folder\CLOUD"%yy%.%mm%.%dd%"\Web.Config""%"
type "%""C:\Publish Folder\CLOUD"%yy%.%mm%.%dd%"\Web.Config""%"

它正确复制Web.Config文件并替换 cloudVersion 变量值。但是,整个文件现在每行都编号如下:

23:  </system.web.extensions>
24:  <appSettings>
25:    <add key="cloudVersion" value="20140818"/>

如何使用bat来更新值,但是不能获得我以后要删除的编号行?

1 个答案:

答案 0 :(得分:2)

如果有人在看,我就是这样做的:

@echo off &setlocal
set "search=@@NEW@@"
set "replace=%yy%%mm%%dd%"
(for /f "delims=" %%i in ('findstr "^" "%""C:\original files\Web.config""%"') do (
    set "line=%%i"
    setlocal enabledelayedexpansion
    set "line=!line:%search%=%replace%!"
    echo(!line!
    endlocal
))>"%""C:\Publish Folder\CLOUD"%yy%.%mm%.%dd%"\Web.Config""%"
type "%""C:\Publish Folder\CLOUD"%yy%.%mm%.%dd%"\Web.Config""%"