PowerShell - 如果行包含字符串,则在开头插入一些字符

时间:2018-04-26 13:10:12

标签: powershell

我有几百个这样的批处理文件:

net use s: \\ukexchange\sysshare 
net use t: \\ukccohelp\helpdesk
net use w: \\ukexchange\public
net use l: \\dwarf\apps
net use y: \\ukexchange\sysgrp
net use k: \\dwarf\sql

我想在每行包含一个字符串的前面放一个REM,例如" ukexchange"

REM net use s: \\ukexchange\sysshare 
net use t: \\ukccohelp\helpdesk
REM net use w: \\ukexchange\public
net use l: \\reddwarf\apps
REM net use y: \\ukexchange\sysgrp
net use k: \\dwarf\sql

这就是我所拥有的,但我必须为UNC路径和驱动器号的每个组合手动运行此命令。

$old = "net use l: \\dwarf\apps"
$new = "REM net use l: \\dwarf\apps"

get-childitem "c:\TEMP\Scripts" -recurse -include *.bat | 
select -expand fullname |
 foreach {
        (Get-Content $_) -replace ("$old" -replace '\\','\\'), "$new" |
         Set-Content $_
        }

如果该行中某处包含特定字符串,如何在行的开头添加一些文本?

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式检查是否存在ukexchange

$files = get-childitem "c:\TEMP\Scripts" -recurse -include *.bat | select -expand fullname

foreach ($f in $files) {
   $c = Get-Content $f | % { $_ -replace '(.*ukexchange.*)', 'REM $1' }
   $c | Set-Content $f
}

如果遇到字符串,整行将存储到匹配组变量$1中,您可以简单地将REM添加到此