我正在尝试使用批处理脚本编辑配置文件。我环顾四周,相信powershell是去这里的方式。我对powershell没有任何经验,因此我猜测语法是导致我出现问题的原因。
以下是文件现在的样子(此部分位于文件的中间)
<!--add key="MinNumCycles" value="25"/-->
<!--add key="MaxNumCycles" value="40"/-->
这就是我想要的样子
<!--add key="MinNumCycles" value="25"/-->
<!--add key="MaxNumCycles" value="40"/-->
<!--RerunMode: 1 write to DB, 2 write to DB and add to RUN export/-->
<add key="RerunMode" value="0"/>
以下是我在批处理文件中尝试做的事情,我需要帮助
SET pattern=<!--add key="MaxNumCycles" value="40"/-->
SET textToAdd1=<!--RerunMode: 1 write to DB, 2 write to DB and add to RUN export/-->
SET textToAdd2=<add key="RerunMode" value="0"/>
SET filename=Software.exe.config
powershell -Command "(gc %filename%) -replace "%pattern%", "$&`n`n%textToAdd1%"'n"%textToAdd2%" | sc %filename%"
答案 0 :(得分:2)
$pattern='<!--add key="MaxNumCycles" value="40"/-->'
$textToAdd = $pattern + '
<!--RerunMode: 1 write to DB, 2 write to DB and add to RUN export/-->
<add key="RerunMode" value="0"/>'
$filename = "Software.exe.config"
([IO.File]::ReadAllText($filename).Replace($pattern,$textToAdd) | Set-Content $filename -Force
以下是我将如何在所有Powershell中个人复制批处理文件。
.Replace()
,它只查找完全字符串。 $textToAdd
包含完全格式化的最终结果,包括我们搜索的字符串(开头和结尾都有字符串,这允许我们将其保留在那里)以及连接的添加。根据您的描述,字符串标记位于日志的中间,因此这将允许它只进行这些更新并将日志重新保存在其中。答案 1 :(得分:0)
从PowerShell命令行,这将起作用(假设您的现有内容位于conf.bat中):
$content = Get-Content -Path 'C:\path\to\Software.exe.config'
$content += "`r`n"
$content += '<!--RerunMode: 1 write to DB, 2 write to DB and add to RUN export/-->'
$content += '<add key="RerunMode" value="0"/>'
Set-Content -Value $content -Path 'C:\path\to\Software.exe.config'
您可以将其另存为脚本,并使用以下命令运行:
powershell.exe -File script.ps1
答案 2 :(得分:0)
SET $pattern= '<!--add key="MaxNumCycles" value="40"/-->'
SET $textToAdd1='<!--RerunMode: 1 write to DB, 2 write to DB and add to
RUN export/-->'
SET $textToAdd2='<add key="RerunMode" value="0"/>'
SET $filename='Software.exe.config'
(Get-Content $filename) -replace pattern, '`n' $textToAdd1 '`n' $textToAdd2 | Set-Content $filename
与罗宾的回答类似,你可以运行另一个脚本。他打了我一拳:)