我有几百个这样的批处理文件:
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 $_
}
如果该行中某处包含特定字符串,如何在行的开头添加一些文本?
答案 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
添加到此