2013-01-14 115 views
1

我試圖在文件中以編程方式更改日期。我需要修復的行看起來是這樣的:Powershell V2查找並替換

set @@dateto = '03/15/12' 

我需要寫一個PowerShell V2腳本替換什麼是單引號內的,我不知道如何做到這一點。

我來最接近的是這樣的:

gc $file | ? {$_ -match "set @@dateto ="} | % {$temp=$_.split("'");$temp[17] 
    =$CorrectedDate;$temp -join ","} | -outfile newfile.txt 

問題:它提供了有關超出範圍的索引17錯誤。另外,outfile只包含一行(未修改的行)。我會很感激任何幫助。謝謝!

回答

1

你可以做這樣的事情(雖然你可能要處理的極端情況):

$CorrectedDate = '10/09/09' 
gc $file | %{ 
    if($_ -match "^set @@dateto = '(\d\d/\d\d/\d\d)'") { 
     $_ -replace $matches[1], $CorrectedDate; 
    } 
    else { 
     $_ 
    } 
} | out-file test2.txt 
mv test2.txt $file -force 
+0

感謝只要有與它 - 一個問題,這是不是在outfile中不斷變化的快速響應 - 。我只是獲得$文件的副本(我現在跳過了mv行)讓我知道我需要糾正什麼。再次感謝你的幫助! – user1467163

+0

發現問題 - 它在我身上。我在那裏的日期是1/5/13,所以它應該匹配的日期模式是\ d/\ d/\ d \ d。我去了兩個數字前加0,它就像一個魅力。謝謝! – user1467163