修改PowerShell脚本:移除匹配'!'的原行并添加指定配置
修改PowerShell脚本移除原匹配的'!'行
原脚本的问题在于,遇到包含!的行时会先输出该行(即原有的!),再追加配置内容,导致结果出现两个!。要移除第一个原有的!,只需要调整输出逻辑,匹配到!时不输出原行,直接输出后续配置内容即可。
修改后的脚本方案一(条件分支拆分)
foreach ($Prog in $input) { (Get-Content $Prog.CamPath) | Foreach-Object { # 仅当当前行不包含'!'时,才输出原行 if (-not ($_ -match '!')) { $_ } # 匹配到'!'时,直接输出配置内容和结尾的'!' if ($_ -match '!') { '<139 \Komponente\' 'IN="4Seiten_fuegen.mpr"' 'XA="0.0000"' 'YA="0.0000"' 'ZA="0.0000"' 'EM="0"' 'PR="0"' 'VA="length 500.0000"' 'VA="width 500.0000"' 'VA="rotation 0.0000"' 'KO="00"' '!' } } | Set-Content $Prog.CamPath }
修改后的脚本方案二(合并if-else逻辑,更简洁)
foreach ($Prog in $input) { (Get-Content $Prog.CamPath) | Foreach-Object { if ($_ -match '!') { '<139 \Komponente\' 'IN="4Seiten_fuegen.mpr"' 'XA="0.0000"' 'YA="0.0000"' 'ZA="0.0000"' 'EM="0"' 'PR="0"' 'VA="length 500.0000"' 'VA="width 500.0000"' 'VA="rotation 0.0000"' 'KO="00"' '!' } else { # 非匹配行正常输出原内容 $_ } } | Set-Content $Prog.CamPath }
修改后执行效果
处理后的文件内容会变成:
<139 \Komponente\ IN="4Seiten_fuegen.mpr" XA="0.0000" YA="0.0000" ZA="0.0000" EM="0" PR="0" VA="length 500.0000" VA="width 500.0000" VA="rotation 0.0000" KO="00" !
内容的提问来源于stack exchange,提问作者carpenter123
相关产品推荐
相关产品推荐

