Sql PowerShell正则表达式日期转换(dd-MMM-yy)为(yyyyymmdd)

Sql PowerShell正则表达式日期转换(dd-MMM-yy)为(yyyyymmdd),sql,regex,date,powershell,Sql,Regex,Date,Powershell,我在文本文件中有以下格式的日期:06/18/2012(dd/mm/yyyy),我想使用Powershell将其转换为:2012-18-06(yyyydmm) (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 Ja

我在文本文件中有以下格式的日期:06/18/2012(dd/mm/yyyy),我想使用Powershell将其转换为:2012-18-06(yyyydmm)

(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
插入(yyyydmm)

在SQL Server或Powershell中是否有一种简单的方法可以做到这一点?

尝试以下方法:

$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中,然后按照您想要的方式重新格式化