You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell在目标目录中为源目录内的每个文件创建硬链接?

如何使用PowerShell在目标目录中为源目录内的每个文件创建硬链接?

我太懂你纠结的点了,New-Item的参数对应关系确实容易搞混,尤其是硬链接模式下的参数,我来给你理清楚正确的用法,不管是单个文件还是批量处理都能搞定。

首先得把参数的对应逻辑搞明白,这是你之前踩坑的核心:

  • -Path:指定硬链接要存放的目标目录
  • -Name:硬链接的文件名(如果想和源文件同名,直接复用源文件的名称就行)
  • -ItemType HardLink:明确告诉PowerShell我们要创建的是硬链接类型
  • -Value:源文件的完整路径(这是很多人搞混的点,千万别和-Path搞反了)

单个文件创建硬链接的示例

如果只是给单个文件创建硬链接,直接这么写就可以:

New-Item -Path "D:\MyTargetFolder" -Name "weekly-report.pdf" -ItemType HardLink -Value "C:\MySourceFolder\weekly-report.pdf"

批量给源目录所有文件创建硬链接

如果你要遍历源目录里的所有文件,批量生成硬链接到目标目录,用Get-ChildItem配合ForEach-Object是最稳妥的方式(直接管道容易因为参数绑定逻辑问题失效,这就是你之前用gci管道没成功的原因):

# 先定义源目录和目标目录的路径
$sourceDirectory = "C:\MySourceFiles"
$targetDirectory = "D:\MyHardLinkFolder"

# 遍历源目录下的所有文件(排除子目录),逐个创建硬链接
Get-ChildItem -Path $sourceDirectory -File | ForEach-Object {
    New-Item -Path $targetDirectory -Name $_.Name -ItemType HardLink -Value $_.FullName
}

额外需要注意的点

  • 硬链接只能在同一个NTFS卷上创建,跨磁盘是不支持的
  • PowerShell的New-Item不支持给目录创建硬链接(如果要做目录链接得用mklink /J,但你要的是文件硬链接,所以不用管这个)
  • 如果目标目录已经有同名文件,New-Item会直接报错;要是想覆盖,要么先删除目标文件,要么加上-Force参数(不过-Force更适合更新已存在的硬链接指向,普通文件还是先删除更稳妥)

备注:内容来源于stack exchange,提问作者Jim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 08:47:36