2013-05-01 64 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的內容。 – 2013-05-01 03:47:08

+0

另一個問題是如果在輸入文件中有正則表達式元字符。在這種情況下,除非您打算將它們用作正則表達式,否則您將需要轉義這些字符。 – 2013-05-01 18:09:32

回答

0

正如@KeithHill已經指出你的腳本目前處理$outputFile行由行。嘗試這樣的代替:

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

$s -replace $r, '' | Out-File $destinationFile