我正试图在每个用户主目录中的"reports"文件夹与master中的"reports"文件夹之间创建一个符号链接。
简而言之,我正在尝试将以下内容转换为Windows将理解的语言
for all users
cd /path/to/firstname.lastname/reports
ln -s ../masterUsername/reports
我试过
MKLINK /d /path/to/masterUsername/reports /path/to/firstname/lastname/reports
第一个用户很好,但它抱怨第二个用户的链接已经存在。
我也试过
/j
我不确定在这种情况下Junction和Directory之间到底有什么区别。
救命!!
在Linux/Unix中使用
ln -s target [linkname]
如果省略了linkname
,则默认为target
的基本名称。
然而,在Windows中,参数linkname
和target
的顺序相反,并且它们都是必需的:
mklink /d linkname target
此外,mklink
是CMD
内置的,因此它不能在PowerShell中单独使用。你需要这样使用它:
cmd /c mklink /d linkname target
如果(例如)你想在所有用户配置文件中创建一个符号链接,应该这样做:
$target = 'C:pathtomasterUsernamereports'
Get-ChildItem 'C:Users' | ? { $_.PSIsContainer } | % {
cmd /c mklink /d (Join-Path $_.FullName 'reports') $target
}
请注意,使用mklink
需要管理员权限。
编辑:要将reports
文件夹从每个用户目录链接到一个中央报告目录,您可以执行以下操作:
$userdir = 'C:Users'
$hub = 'C:pathtomasterUsernamereports'
Get-ChildItem $userdir | ? { $_.PSIsContainer } | % {
$userReports = Join-Path $_.FullName 'Documentsreports'
if (Test-Path -LiteralPath $userReports) {
cmd /c mklink /d (Join-Path $hub $_.Name) $userReports
}
}