我在 Visual Studio 2013 中创建了一个 Web 应用程序。我的 Web.Config 文件中有此 appSetting:
<add key="cloudVersion" value="@@NEW@@"/>
发布应用程序后,我运行一个bat文件,该文件复制已发布的目录,将今天的日期附加到目录名称,压缩更新的目录,并将其上传到Google驱动器,以便我的团队的其他成员可以访问它。
我正在尝试使用相同的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 更新值,但不获取稍后必须删除的编号行?
最佳答案
如果有人在看,这就是我所做的:
@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""%"
关于batch-file - bat 文件修改 web.config 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25366097/