我有一個PowerShell腳本進入文件,並且對於E:的每個實例,它都將用代替它CBM-FS01 | 2013-02-03 | E:使用PowerShell基於文件名將數據插入文件
$filenames = @("C:\SCRIPT\CBM-FS01-E-20130203114114.txt.out")
foreach ($file in $filenames) {
$outfile = "$file" + ".sql"
Get-Content $file | Foreach-object {
$_ -replace "E:","CBM-FS01|2013-02-03|E:" `
} | Set-Content $outfile
}
如果你看近,你可以看到,我得到基於文件名此信息。文件名將始終爲助記符-MACHINE-DRIVE-YYYMMDDHHMMSS.txt。
修改幾個文件的腳本是好的,但我可能需要在一百個文件上運行這個腳本!有沒有辦法使用PowerShell來使用GET-CHILDITEM cmdlet並讓PowerShell根據不同的文件名自動執行-replace?
編輯: 我需要提取部分文件名,並將其插入到文件中。例如,對於文件CBM-FS01-E-20130203114114.txt,我需要將助記機(CBM-FS01)和YYYMMDD(2013-02-03)提取到文件中。因此,
$_ -replace "E:","CBM-FS01|2013-02-03|E:" `
這有效!但是,我們有一些奇怪的文件名是CBM-EXXFS-001-E-20130203114114.txt和CBMFS01-E-20130203114114.txt。我將如何修改正則表達式? – 2013-03-19 20:15:10
無視。我做了一點實驗。對於第一個例子,我將它修改爲$ regex ='^([^ - ] + - [^ - ] + - [^ - ] +) - ([AZ]) - (\ d {4})(\ d \ d)(\ d \ d)。+」 – 2013-03-19 20:29:56