Below is example PowerShell code to create a directory structure from file creation dates.
A use case for this code might be a need to organize a collection of files stored on an SFTP server or NAS. The code can be modified to loop through the files putting each one into sub directories corresponding to nested folders organized into Year\Month\Day folders.
To use the logic first create a test folder on your computer.
Then copy the logic below to a text file editor and find and replace the following with reference to your test folder location:
C:\YourTestDirectory
Then save the code below as a PowerShell file called “DirFromDate.ps1” into your test folder.
To then run the file open up PowerShell and paste the following line:
Set-ExecutionPolicy RemoteSigned
Hit return and then enter the letter A if requested.
Then enter the following replacing “YourTestDirectory” with your actual test directory location:
& “C:\YourTestDirectory\DirFromDate.ps1”
Hit return.
<# .SYNOPSIS <A brief description of the script> .DESCRIPTION <A detailed description of the script> .PARAMETER <paramName> <Description of script parameter> .EXAMPLE <An example of using the script> #> #FIND AND REPLACE THE FOLLOWING WITH A DIRECTORY C:\YourTestDirectory #How Run In Powershell #Open Powershell terminal and run the folling line: #Set-ExecutionPolicy RemoteSigned #Type A and press Enter (if applicable). #Run the below including "&" at start of line #& "C:\YourTestDirectory\DirFromDate.ps1" #VARIABLES #Define folder variables $workingFolder = "C:\YourTestDirectory\" #Define file variable $testFile = "\ThisIsATestFile.txt" $testFile = $workingFolder + $testFile ############################################### #(!!DO NOT ALTER SCRIPT PASSED THIS POINT!!) ############################################### #Write variables to terminal Write-Host "Filepath: $workingFolder"; #Create test File New-Item $testFile #Define source directory variable $files = Get-ChildItem -Path $workingFolder #3 steps: move raw files to azure, zip file, move zipped file to azure foreach ($file in $files) { #FileName Write-Host "File: $file"; #Get file creation date from file name $fileDate = $file.CreationTime.ToString("ddMMyyyy") #Get file creation date (last time data was written to file) from file name #$fileDate = $file.LastWriteTime.ToString("ddMMyyyy") Write-Host "Filedate: $fileDate"; $fileDate = $fileDate.Substring($fileDate.Length - 4) + "\" + $fileDate.Substring(3, 2) + "\" + $fileDate.Substring(0, 2) Write-Host "Filedate: $fileDate"; $DirectoryStructure = $workingFolder + "\" + $fileDate Write-Host "DirStructure: $DirectoryStructure"; } md $DirectoryStructure Move-Item -Path $testFile -Destination $DirectoryStructure