BLUE7777777 发表于 2023-5-15 18:06

使用PowerShell批量生成软链接(便于冗余文件分盘)

本帖最后由 BLUE7777777 于 2023-7-23 18:28 编辑

使用PowerShell批量生成软链接(便于冗余文件分盘)

应用场景举例:QQ小图片过多,软链接分在别的硬盘/NAS上,减少本地磁盘压力,加快消息记录搜索速度。
当然也适用其它包含冗余文件场景,可自行操作。

样例代码只需要修改两个地方:
$Local_link:本地路径
$target_Item:远程路径(也可以是本地其它硬盘/分区)

PowerShell需要用管理员身份运行


样例代码打包下载地址(打包代码已测试过):
https://cloud.189.cn/t/u6Z7f2z6J3Ev




Function New-SymLink ($link, $target)
{
    if (test-path -pathtype container $target)
    {
      $command = "cmd /c mklink /d"
    }
    else
    {
      $command = "cmd /c mklink"
    }

    invoke-expression "$command $link $target"
}

Function Remove-SymLink ($link)
{
    if (test-path -pathtype container $link)
    {
      $command = "cmd /c rmdir"
    }
    else
    {
      $command = "cmd /c del"
    }

    invoke-expression "$command $link"
}

Function For-New-SymLink ($link, $target)
{
$Local_link_For=$link
$target_Item_For=$target
$target_files=dir
$target_fileslength=$target_files.count
for($i=0;$i -lt $target_fileslength;$i++)
{
if($target_files[$i].mode -eq "d-----")
{echo "folder"
$source_file=$target_files[$i].name
New-Symlink $Local_link_For\$source_file $target_Item_For\$source_file
}
else
{echo "file"
$source_file=$target_files[$i].name
New-Symlink $Local_link_For\$source_file $target_Item_For\$source_file
}
}
}


BLUE7777777 发表于 2023-5-15 18:19

以QQ举例来说,先把QQ聊天记录根目录的文件放进去,再执行PowerShell代码,链接远程路径创建文件夹的软链接,这样就把图片存在了远程目录上,不会给本地磁盘造成很大负担。

ysjd22 发表于 2023-5-15 21:01

谢谢楼主

BLUE7777777 发表于 2023-5-18 12:43

New-Symlink是PowerShell特有的,cmd用不了的

落叶风扶柳 发表于 2024-3-12 20:42

谢谢楼主

hjsen 发表于 2024-3-12 20:53

页: [1]
查看完整版本: 使用PowerShell批量生成软链接(便于冗余文件分盘)