2013-11-04 60 views
1

有很多子文件夹,并且只能为二阶子文件夹创建目录连接。如何使用PowerShell为多个子目录创建目录连接?

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

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 

手册编码为每个文件夹:

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 

结果:

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 

如何使它对一切都只是第二订购子文件夹几个命令,而不是手动为每个文件夹写代码?命令不应该为第1,第3,第4,第5 ...个子文件夹创建目录结点。

回答

4

试试这个:

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} 
+0

它应该有“CMD/C” mklink之前,因为“术语‘mklink’不被识别为cmdlet,函数,脚本文件或可操作 程序的名称。 “ – ide

+0

是的,mklink是内置于cmd.exe中的,并不是一个exe文件。谢谢。 –