Hi guys,
first time poster, any help would be great.
I’m looking for a script that can update a number of CSV files in a folder, inserting part of the name of the file itself (which is a date).
For example the files are called:-
Load-01-Feb-2017.csv
Load-31-Jan-2017.csv
Load-30-Jan-2017.csv
The contents of the files contain:-
Load1,Clientname,Servername
Load2,ClientName,Servername
I would like to be able to insert the date somehow into the current format so it looks like the following for the file created on the 01-Feb-2017:-
Load1,Clientname,Servername,01-Feb-2017
Load2,ClientName,Servername,01-Feb-2017
I then plan to merge them which is easy enough I just need the dates added before I do.
Thanks for any tips or pointers.
Hi Barry,
I’ve created a quick example which could work for you.
param (
[System.String]
$Path = 'C:\Input\Load-*',
[System.String]
$OutputFilePath = 'C:\Output\Combined.csv'
)
Get-ChildItem -Path $Path -File -PipelineVariable loadFile |
ForEach-Object {
# Split the filename (basename) without the extension into two items
$fileDate = ($loadFile.BaseName.Split('-', 2)[1])
Get-Content -Path $loadFile.FullName | ForEach-Object { "$PSItem,$fileDate" }
} | Out-File -FilePath $OutputFilePath
It gets a list of files (Get-ChildItem), iterates over the list (ForEach-Object), splits the filename (basename) into two parts (Load and xx-xxx-xxxx), loads each file into an array lines (Get-Content), iterates over the array of lines (2nd ForEach-Object), appends the file date extracted earlier to each line and outputs everything into one merged/combined file (Out-File).
Legend, thanks Daniel. Works perfectly.
Again thanks for the quick reply!
I’m glad my reply was helpful :-). Thank you.