如何使用 PowerShell 为多个子目录创建目录连接?

ide*_*ide 2 windows powershell scripting function mklink

有很多子文件夹,只能为二阶子文件夹创建目录连接。

当前文件夹结构的某些部分如下所示

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
Run Code Online (Sandbox Code Playgroud)

每个文件夹的手动编码:

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
Run Code Online (Sandbox Code Playgroud)

结果:

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
Run Code Online (Sandbox Code Playgroud)

如何使用一些命令为所有二阶子文件夹制作它,而不是为每个文件夹手动编写代码?命令不应为 1st、3rd、4th、5th.. order 子文件夹创建目录连接。

Kei*_*ill 5

尝试这个:

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}
Run Code Online (Sandbox Code Playgroud)