Reputation: 117
There are a lot of sub-folders and have to create directory junction for only 2nd order sub-folders.
Some part of current folder structure is shown below
C:\MainFolder>tree
Folder PATH listing for volume C System
C:.
├───1stSub-FolderA
│ ├───2ndSub-FolderA
│ └───2ndSub-FolderB
└───1stSub-FolderB
├───2ndSub-FolderA
└───2ndSub-FolderB
D:\MainFolder-Copy>tree
Folder PATH listing for volume Dosya
D:.
├───1stSub-FolderA
└───1stSub-FolderB
Manual coding for each folder:
C:\>mklink /j D:\MainFolder-Copy\1stSub-FolderA\2ndSub-FolderA C:\MainFolder\1stSub-FolderA\2ndSub-FolderA
Junction created for D:\MainFolder-Copy\1stSub-FolderA\2ndSub-FolderA <<===>> C:\MainFolder\1stSub-FolderA\2ndSub-FolderA
C:\>mklink /j D:\MainFolder-Copy\1stSub-FolderA\2ndSub-FolderB C:\MainFolder\1stSub-FolderA\2ndSub-FolderB
Junction created for D:\MainFolder-Copy\1stSub-FolderA\2ndSub-FolderB <<===>> C:\MainFolder\1stSub-FolderA\2ndSub-FolderB
C:\>mklink /j D:\MainFolder-Copy\1stSub-FolderB\2ndSub-FolderA C:\MainFolder\1stSub-FolderB\2ndSub-FolderA
Junction created for D:\MainFolder-Copy\1stSub-FolderB\2ndSub-FolderA <<===>> C:\MainFolder\1stSub-FolderB\2ndSub-FolderA
C:\>mklink /j D:\MainFolder-Copy\1stSub-FolderB\2ndSub-FolderB C:\MainFolder\1stSub-FolderB\2ndSub-FolderB
Junction created for D:\MainFolder-Copy\1stSub-FolderB\2ndSub-FolderB <<===>> C:\MainFolder\1stSub-FolderB\2ndSub-FolderB
Result:
C:\MainFolder>tree
Folder PATH listing for volume C System
C:.
├───1stSub-FolderA
│ ├───2ndSub-FolderA
│ └───2ndSub-FolderB
└───1stSub-FolderB
├───2ndSub-FolderA
└───2ndSub-FolderB
D:\MainFolder-Copy>tree
Folder PATH listing for volume Dosya
D:.
├───1stSub-FolderA
│ ├───2ndSub-FolderA
│ └───2ndSub-FolderB
└───1stSub-FolderB
├───2ndSub-FolderA
└───2ndSub-FolderB
How to make it for all just 2nd order sub-folders with a few commands instead of writing the code manually for each folder? Commands should not create directory junction for 1st, 3rd, 4th, 5th.. order sub-folders.
Upvotes: 2
Views: 4190
Reputation: 201672
Try this:
Get-ChildItem D:\MainFolder-Copy -Directory |
Foreach {Get-ChildItem (Join-Path C:\MainFolder $_.Name) -Directory} |
Foreach {cmd /c mklink /j ($_.FullName -replace 'C:\\MainFolder','D:\MainFolder-Copy') $_.FullName}
Upvotes: 5