2013-09-30 59 views
0

我在以下格式的文本文件中包含日期:2012/6/18(dd/mm/yyyy)我想將其轉換爲:2012-18 -06(yyyyddmm)使用Powershell。PowerShell RegEx日期轉換(dd MMM yy)爲(yyyymmdd)

(Get-Content C:\script\test.txt) | 
Foreach-Object {$_ -replace "([0-9]+)/+([0-9]+)/+([0-9]+)", '$3$2$1'} | 
Set-Content C:\script\test.txt 

上面似乎工作正常。雖然我與改變以下

12 Jan 2013 Test.docx  
01 February 2001 File.pptx  
Meeting 04 Feb 2012.xls  
09 September 2011.txt  
30 Jan 13.doc 

成(yyyyddmm)奮力

是否有SQL Server或PowerShell的這樣的一個簡單的方法?

回答

0

試試這個:

$lines = @' 
12 Jan 2013 Test.docx  
01 February 2001 File.pptx  
Meeting 04 Feb 2012.xls  
09 September 2011.txt  
30 Jan 13.doc 
'@ -split "`n" 

$lines | % {[regex]::Replace($_, '(.*?)(\d+\s+\w+\s+[0-9]+)(.*?)', {param($match) $d = [DateTime]::Parse($match.groups[2].value).ToString("yyyyddMM"); "$($match.groups[1].value)$d$($match.groups[3].value)"})} 

它使用[正則表達式] ::更換過載,你可以指定一個回調來處理匹配的文本。有了這個,你可以運行日期部分到DateTime.Parse中,然後重新格式化你想要的方式。

相關問題