使用powershell从行中的特定索引中删除字符串

时间:2012-01-01 07:52:43

标签: powershell powershell-v2.0

我的文本文件内容类似于以下行

xcopy Source Destination /y /r /Q
xcopy Source Destination /y /r

我试图删除Desination后的所有字符。

我正在尝试使用Indexof方法并删除方法。但我找不到正确的答案

我尝试找到Whitespace的第三次出现并从中删除。但它不起作用。

$index=$line.IndexOf(" ",3)
$line=$line.RemoveAt($index)

有人可以帮助我使用powershell

来实现这一目标

2 个答案:

答案 0 :(得分:2)

我猜你的实际文件会有这样的路径:

xcopy "C:\Folder with space" "C:\Folder 2 with space" /y /r /Q

因此,您可以使用搜索/替换正则表达式删除xcopy参数,例如:

'xcopy "C:\Folder with space" "C:\Folder 2 with space" /y /r /Q' -replace '/[\w]' , ''

结果是:

xcopy "C:\Folder with space" "C:\Folder 2 with space"

这样您就不必担心xcopy参数之前有多少个空格。无论前面有多少个空格,参数都会被删除。

正则表达式匹配并删除带正斜杠的文本,后跟表示单词字符的character class

答案 1 :(得分:0)

[Regex]::Replace("xcopy Source Destination /y /r /Q","^(xcopy) +([^ ]+) +([^ ]+).*$","`$1 `$2 `$3")应该可以解决问题。