Удалить строки из определенного индекса в строке, используя powershell - PullRequest
0 голосов
/ 01 января 2012

Содержимое моего текстового файла аналогично следующим строкам

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

Я пытаюсь удалить все символы после Desination.

Я пытался использовать метод Indexof и метод remove.Но я не нашел правильного ответа

Я попытался найти третий случай появления пробела и удалить из него.но это не работает.

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

Может кто-нибудь поможет мне добиться этого с помощью powershell

Ответы [ 2 ]

2 голосов
/ 01 января 2012

Я предполагаю, что ваш фактический файл будет иметь следующие пути:

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. Параметры будут удалены независимо от того, сколько пробелов было до них.

Регулярное выражение сопоставляет и удаляет текст с косой чертой, за которым следует класс символов , представляющий символ слова.

0 голосов
/ 01 января 2012

[Regex]::Replace("xcopy Source Destination /y /r /Q","^(xcopy) +([^ ]+) +([^ ]+).*$","`$1 `$2 `$3") должен сделать трюк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...