每当我在Git中切换分支时,我必须在一个XML文件中更新一行,这样我就可以在本地看到我的图像(从图像服务器中提取)。我不想要永久性的解决方案来更改文件(例如gitignore),因为该文件会不时更改。
我想运行一个只会改变这一行的批处理:
<add key="Images.RootUrl" value="//images.dev.foo.com:7000/" />
到
<add key="Images.RootUrl" value="//imagesperf.foo.com/" />
我正在尝试实现我在SO上找到的两种方法中的一种,但到目前为止它们都没有我,部分是因为所有的引用。
cd c:\Projects\Git\foo\Foo.Web.Store
FINDSTR /I /V /B "Images.RootUrl" Web.config > config.new
ECHO <add key="Images.RootUrl" value="//imagesperf.foo.com/" /> >> config.new
REM DEL Web.config
REM REN Web.new Web.config
PAUSE
cd c:\Projects\Git\foo\Foo.Web.Store
for %%f in (Web.config) do (
for /f "tokens=1* delims=:" %%g in ('type "%%f" ^| findstr /n /v "images.dev.foo.com:7000"') do (
if "%%hx"=="x" (
echo.>>"tempWeb.config"
) else (
for /f "tokens=1* delims==" %%i in ('echo.%%h') do (
if "%%i"=="images.dev.foo.com:7000" (
echo.%%i=%%jimagesperf.foo.com>>"tempWeb.config"
) else (
if "%%jx"=="x" (
echo.%%i>>"tempWeb.config"
) else (
echo.%%i=%%j>>"tempWeb.config"
)
)
)
)
)
)
REM ren Web.config oldWeb.config
REM ren tempWeb.config Web.config
答案 0 :(得分:0)
为您使用的环境创建文件版本,并在每个文件的末尾添加_ENVNAME。设置.gitignore忽略.xml文件。然后,根据需要在每个环境中对.xml文件进行符号链接。
例如:
ln -s some.xml_LOCAL some.xml
在当地:
/some.xml
在.gitignore
Sub CheckRevision()
Dim CurCell As Object
For Each CurCell In ActiveWorkbook.ActiveSheet.Range("A1:AZ500")
If CurCell.Value = "Revision" Then CurCell.Interior.Color = RGB(0,204,0)
Next
End Sub
为安全起见,您可能还想从git中删除some.xml。
最后,将此文件记录给其他人。
答案 1 :(得分:0)
此批处理文件可以执行您想要的操作:
@echo off
setlocal EnableDelayedExpansion
set "replace=<add key="Images.RootUrl" value="//imagesperf.foo.com/" />"
rem Get the number of the target line minus one
for /F "delims=:" %%a in ('findstr /I /N "Images.RootUrl" Web.config') do set /A lines=%%a-1
rem Redirect the input file to read it via SET /P
< Web.config (
rem Copy lines before the target one
for /L %%i in (1,1,%lines%) do (
set "line="
set /P "line="
echo/!line!
)
rem Read the target line and replace it
set /P "line="
echo !replace!
rem Copy the rest of lines
findstr "^"
rem Store the output in a temporary file
) > Web.new
move /Y Web.new Web.config
但是,如果替换的行不必与原始行位于同一位置,那么第一种方法应该可行;你只有两个小错误:
FINDSTR /I /V "Images.RootUrl" Web.config > config.new
ECHO ^<add key="Images.RootUrl" value="//imagesperf.foo.com/" /^> >> config.new
REM DEL Web.config
REM REN Web.new Web.config
PAUSE
<
>
和^
字符