2013-05-01 3 views
0

Я пытаюсь удалить строку из файла с помощью Powershell. Строка из другого файла.Удалить многострочную строку из файла с помощью PowerShell

Мой код может успешно прочитать файл, но не удалить строку из другого файла. Что происходит не так и как я могу это исправить?

$inputFile   = ".\usermenuTest1.4d" 
$outputFile   = ".\usermenuTest2.4d" 
$destinationFile = "$outputFile.new" 

# Read input file into variable 
$target = [IO.File]::ReadAllText($inputFile) 

# Replace target in output file 
(Get-Content $outputFile) | Foreach-Object { 
    $_ -replace $target, '' 
    } | Set-Content $destinationFile 
+0

Включает ли строку, которую вы заменяете, несколько строк? Ваш текущий скрипт обрабатывает содержимое $ outputFile по одной строке за раз. –

+0

Другая проблема: если во входном файле есть метасимволы регулярных выражений. В этом случае вам нужно будет избежать этих символов, если вы не собираетесь использовать их в качестве регулярного выражения. –

ответ

0

Как @KeithHill уже указывал ваш скрипт в настоящее время обрабатывает $outputFile линию за линией. Вместо этого попробуйте что-то вроде этого:

$s = [IO.File]::ReadAllText($outputFile) 
$r = [IO.File]::ReadAllText($inputFile) 

$s -replace $r, '' | Out-File $destinationFile 
Смежные вопросы