我有幾天的handle.exe
運行輸出的衆多.txt文件。我需要重新組織數據以將其存入關係數據庫。我需要做的第一件事就是重新格式化日期。在.txt文件中重新格式化多個日期(每個不同)
每個文件有超過800個日期,分佈在整個文件不均勻。日期格式:
June 29, 2016 12:05:45 PM
和我需要06-29-16 12:05:45
。
我現在只是在處理單個文件,以便撥打電話。我試圖用Get-Date
原位替換日期(使用原始日期的數組),並且無處可用。然後我嘗試-replace
,那沒有奏效。
我已經花了3到4天的時間,我想我已經傷了腦筋。我已經嘗試了很多東西排列,我甚至不知道我現在在哪裏。
我試過的最後一件事是在下面。嘗試使用散列表,在表中使用舊日期和新日期。
##To set "|" as separator for arrays
$OFS = '|'
##To get original dates into array
$a = @(sls .\hp.txt -pattern '(june 29|june 30|july 1|july 2|july 3|july 4)' | select -ExpandProperty line)
##To get dates with corrected format into array
$b = @($a | foreach {$_ | Get-Date -Format "MM-dd-yy hh:mm:ss"})
##To get old and new dates into hash table
$dates = @{$a = $b}
##To bring in content from file
$file = (Get-Content C:\hp.txt)
##To replace "NAME" with "VALUE" from hash table into file
foreach ($d in $dates) {
$file = $file -replace $d.Name, $d.Value
}
##To save corrected file with new file name
Set-Content -Path C:\hpnew.txt -Value $file
的$a
數組包含(小部分):
June 29, 2016 12:04:51 PM June 29, 2016 12:05:58 PM June 29, 2016 12:07:00 PM [NOTE: LOTS MORE DATES HERE] June 30, 2016 12:01:17 AM June 30, 2016 12:02:19 AM June 30, 2016 12:04:22 AM [NOTE:CONTINUING TO END]
的$b
數組包含:
06-29-16 12:04:51 06-29-16 12:05:58 06-29-16 12:07:00 [NOTE: LOTS MORE DATES ] 06-30-16 12:01:17 06-30-16 12:02:19 06-30-16 12:04:22 [NOTE: CONTINUING TO END]
有可能是一個更簡單,更優雅的解決方案。但任何幫助/方向都會很棒。
,如果你能安裝PS v5你可以嘗試 - Convert-FromString http://www.powershellmagazine.com/2014/09/09/using-the-convertfrom-string-cmdlet-to-parse-structured-text/ – Kiran
Kiran ...謝謝爲小費。但在4.0中真的沒有辦法做到這一點?散列表是否不起作用?看起來好像我接近了,但我無法做出最後的調整來讓它發揮我尋求的結果。 – Charlie