String 替换字符串但复制字符串的一部分

String 替换字符串但复制字符串的一部分,string,powershell,replace,String,Powershell,Replace,我有几个批处理文件需要更改。 在文件中循环并替换工作正常 我就是想不出怎么能有这样一行字 net use w: \\someserver\someshare 替换为两行 net use w: /delete /yes net use w: \\someotherserver\someshare 替换表达式和正则表达式是否可以实现这一点? 或者我必须将驱动器号存储在变量中才能实现这一点 谢谢,是的,可以使用-替换: $yourFilePath = 'PATH_TO_YOUR_FILE

我有几个批处理文件需要更改。
在文件中循环并替换工作正常

我就是想不出怎么能有这样一行字

net use w: \\someserver\someshare  
替换为两行

net use w: /delete /yes  
net use w: \\someotherserver\someshare 
替换表达式和正则表达式是否可以实现这一点?
或者我必须将驱动器号存储在变量中才能实现这一点


谢谢,

是的,可以使用
-替换

$yourFilePath = 'PATH_TO_YOUR_FILE'
$content = Get-Content $yourFilePath
$content -replace '^net use (\w): .*', "net use `$1: /delete /yes `n`$0" | Set-Content $yourFilePath

脚本会将所需的行添加到您的文件中并使用particualr驱动器,但不会检查该行(
net use drive:/delete/yes
)是否已存在。

谢谢,效果很好:)只需在
n之前添加
r即可将其添加到新行。想解释一下驱动器号是如何在$1中结束的吗?因为(
\w)
在括号中,所以在
$1
中被捕获(因为它是第一个捕获组。
$0
是整个正则表达式匹配,我将捕获到包括冒号在内的所有内容,因为它在两个命令中都是相同的:
-replace'^(net use\w:).*,“`1/delete/yes`n`$0”
@AnsgarWiechers是的,我错过了。你赢得了regex高尔夫();-)