Pergunta

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.

Foi útil?

Solução

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}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top