0

次の形式のテキスト ファイルに日付があります: 2012 年 6 月 18 日 (dd/mm/yyyy) に変換したい: Powershell を使用して 2012-18-06 (yyyyddmm)。

(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 でこれを行う簡単な方法はありますか?

4

1 に答える 1

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)"})}

これは [regex]::Replace オーバーロードを使用し、一致したテキストを処理するためのコールバックを指定できます。これにより、日付部分を DateTime.Parse に実行して、必要な方法で再フォーマットできます。

于 2013-09-30T04:11:16.350 に答える