使用powershell编辑Windows批处理文件中的文件

用户1984300

我正在尝试使用批处理脚本编辑配置文件。我环顾四周,我相信 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%"
ferrell_io
$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 中复制批处理文件的方法。

  1. 您的 Powershell 命令执行替换的方式将期望 RegEx,而您的模式将与您期望的方式不匹配。它会匹配它,好像它是一个 RegEx 模式,而不是像您输入的那样匹配确切的字符串。如果您使用 .NET 字符串方法.Replace(),它只会查找精确的字符串。
  2. $textToAdd包含完全格式化的最终结果,包括我们正在搜索的字符串(开始和结束结果都有字符串,这允许我们将其保留在那里)以及连接的加法。根据您的描述,字符串标记位于日志的中间,因此这将允许它仅进行这些更新并完整地重新保存日志。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用变量从批处理文件中调用 powershell 替换

使用Ansible在Windows中运行批处理文件

在Windows批处理文件中的SET上使用变量

使用批处理文件编辑文本文件

仅保留 txt 文件中包含某个单词/字符的行(Powershell)(Windows 批处理文件)

如何使用批处理文件在系统文件夹中创建批处理文件

让Windows 7使用组策略编辑器执行批处理文件;但保持与Notepad ++的关联

批处理文件以在Windows中运行其他批处理文件

将Powershell变量传递到Windows批处理文件

Windows PowerShell批处理文件重命名

使用Windows批处理文件删除重复的文件

在批处理文件中使用powershell从文本文件中添加浮点数

如何使用父批处理文件中的参数调用子批处理文件?

批处理文件以更改从Powershell中运行的目录

用于在特定目录中启动Powershell的批处理文件

在批处理文件中调用Powershell命令

通过Powershell在批处理文件中传递参数

在Powershell中设置批处理文件的变量

在批处理文件中运行powershell命令

在批处理文件中返回PowerShell命令结果

在批处理文件中链接 Powershell 命令?(视窗)

从批处理文件在Powershell脚本中运行参数

在批处理文件中运行PowerShell脚本

Windows批处理文件处理-循环

使用批处理文件或Powershell取消注释xml节点

使用批处理文件+ Powershell脚本的Set-ExecutionPolicy

无法使用批处理文件运行PowerShell脚本

使用提升的权限从批处理文件运行 Powershell 脚本?

使用批处理文件在单个文件中写入多行