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

如何通过PowerShell或批处理移动Windows 10默认用户数据文件夹位置?

当然可行!我经常帮朋友和用户做这类默认文件夹迁移,用PowerShell或者批处理都能轻松实现,脚本写起来也不复杂。下面给你详细拆解两种方法,附带关键注意事项,确保你迁移过程顺畅不出错。

使用PowerShell迁移默认用户文件夹

我更推荐用PowerShell,它的语法更灵活,处理路径和注册表操作也更直观。这里以迁移Documents和Pictures为例,你可以按需扩展到Music、Videos等其他文件夹:

# 定义源路径和目标路径(把D:\UserData改成你实际的目标驱动器路径)
$sourcePaths = @(
    "$env:UserProfile\Documents",
    "$env:UserProfile\Pictures"
)
$targetPaths = @(
    "D:\UserData\Documents",
    "D:\UserData\Pictures"
)

# 循环处理每个文件夹
for ($i = 0; $i -lt $sourcePaths.Count; $i++) {
    $source = $sourcePaths[$i]
    $target = $targetPaths[$i]

    # 创建目标文件夹(如果不存在)
    if (-not (Test-Path $target)) {
        New-Item -ItemType Directory -Path $target | Out-Null
        Write-Host "已创建目标文件夹:$target"
    }

    # 用Robocopy复制文件(保留权限、支持增量复制,比Copy-Item更可靠)
    robocopy $source $target /E /COPYALL /R:3 /W:5 /XD "$source\AppData"
    Write-Host "已完成$source到$target的文件复制"

    # 映射注册表对应的键值名称
    $regValueNames = @{
        "$env:UserProfile\Documents" = "Personal"
        "$env:UserProfile\Pictures" = "My Pictures"
    }
    $regValueName = $regValueNames[$source]

    # 修改注册表(两个键都要更新,确保系统和旧程序都能识别)
    $regPaths = @(
        "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders",
        "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
    )
    foreach ($regPath in $regPaths) {
        Set-ItemProperty -Path $regPath -Name $regValueName -Value $target
        Write-Host "已修改注册表项:$regPath\$regValueName -> $target"
    }
}

# 重启资源管理器让更改立即生效
Stop-Process -Name explorer -Force
Start-Process explorer
Write-Host "资源管理器已重启,更改生效"

小提示

Robocopy的参数说明:/E复制所有子目录(包括空目录),/COPYALL复制文件所有权限和属性,/R:3失败后重试3次,/W:5重试间隔5秒,/XD排除系统自动生成的AppData子目录。

使用批处理脚本迁移默认用户文件夹

如果你更习惯批处理,也可以用下面的脚本,逻辑和PowerShell完全一致:

@echo off
setlocal enabledelayedexpansion

:: 定义源路径和目标路径(修改成你的实际目标路径)
set "sourceDocs=%UserProfile%\Documents"
set "targetDocs=D:\UserData\Documents"
set "sourcePics=%UserProfile%\Pictures"
set "targetPics=D:\UserData\Pictures"

:: 处理Documents文件夹
if not exist "%targetDocs%" (
    mkdir "%targetDocs%"
    echo 已创建目标文件夹:%targetDocs%
)
robocopy "%sourceDocs%" "%targetDocs%" /E /COPYALL /R:3 /W:5 /XD "%sourceDocs%\AppData"
echo 已完成Documents文件夹复制

:: 修改Documents对应的注册表项
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal /t REG_EXPAND_SZ /d "%targetDocs%" /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal /t REG_SZ /d "%targetDocs%" /f
echo 已修改Documents的注册表设置

:: 处理Pictures文件夹
if not exist "%targetPics%" (
    mkdir "%targetPics%"
    echo 已创建目标文件夹:%targetPics%
)
robocopy "%sourcePics%" "%targetPics%" /E /COPYALL /R:3 /W:5 /XD "%sourcePics%\AppData"
echo 已完成Pictures文件夹复制

:: 修改Pictures对应的注册表项
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "My Pictures" /t REG_EXPAND_SZ /d "%targetPics%" /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Pictures" /t REG_SZ /d "%targetPics%" /f
echo 已修改Pictures的注册表设置

:: 重启资源管理器
taskkill /f /im explorer.exe
start explorer.exe
echo 资源管理器已重启,更改生效

pause
关键注意事项
  • 先备份注册表:操作前导出HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders和Shell Folders这两个键,万一出错可以快速恢复。
  • 不要删除原文件夹:迁移后原文件夹会变成指向新路径的符号链接,删除它可能导致部分程序找不到路径,系统也可能自动重建原文件夹。
  • 用当前用户运行脚本:不要用管理员账户运行(除非你要迁移管理员的文件夹),否则注册表修改会应用到管理员账户,而非你当前登录的用户。
  • 先测试小文件夹:可以先迁移一个小文件夹验证脚本正常,再批量迁移所有目标文件夹。

内容的提问来源于stack exchange,提问作者Vito RM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:45:04