Windows11/10下如何把安装软件里的大型目录数据迁移到其他盘符目录并保证软件正常运行

参考资料地址
robocopy
mklink

迁移原因

因为在D盘创建目录时创建了ProgramData文件夹,ProgramData 是 Windows 系统预设的全局应用程序数据存储目录,默认位于 C 盘(C:\ProgramData),结果导致里面安装的Ancona出现一系列问题,比如写文件受限,安装程序受限,还有其他一些奇奇怪怪问题。

使用工具

使用 Robocopy 和 mklink 工具,迁移ProgramData文件夹里的全部内容到Softwares文件夹。具体实例为 迁移Anaconda 到新目录,其他目录类似操作,这个方法也适合C盘要爆了时把C盘里占用大容量的文件迁移到其他盘符。

一、迁移前的准备工作

  1. 备份重要数据
    首先对Anaconda环境和数据进行备份:

    robocopy "D:\ProgramData\anaconda3" "D:\Anaconda_Backup" /E /COPY:DAT
    

    手动逐个导出每个环境:
    键入win+R用管理员身份运行cmd

    conda env list
    # conda environments:
    #
    base                  *  /path/to/anaconda3
    myenv1                   /path/to/anaconda3/envs/myenv1
    myenv2                   /path/to/anaconda3/envs/myenv2
    conda env export -n <环境名称> > <输出文件名>.yml
    conda env export -n myenv1 > myenv1.yml
    conda env export > myenv.yml  #导出当前激活的环境
    

    用脚本导出环境:

    • 创建一个.bat文件(例如export_all_envs.bat)如下:
      @echo off
      setlocal enabledelayedexpansion
      
      rem 获取所有环境名称
      for /f "tokens=1*" %%a in ('conda env list ^| findstr /r "[^ ]* *$"') do (
         set "env_name=%%a"
         rem 跳过 base 环境
         if not "!env_name!"=="base" (
             echo Exporting !env_name!...
             conda env export -n "!env_name!" > "!env_name!.yml"
         )
      )
      echo All environments exported.
      
      导出文件在当前工作目录下
      anaconda文件夹大小
  2. 关闭所有Anaconda相关进程
    确保以下程序已关闭:

    • Anaconda Navigator
    • Jupyter Notebook/Lab
    • 所有Python脚本和终端
  3. 创建目标目录

    mkdir "D:\Softwares\anaconda3"
    
  4. 以管理员身份运行命令提示符

    • 右键点击「开始」菜单,选择「命令提示符(管理员)」win+R打开cmd
    • 或使用PowerShell:右键「开始」→「Windows 终端(管理员)」

二、使用Robocopy迁移文件

执行以下命令迁移文件(保留所有属性和权限):

robocopy "D:\ProgramData\anaconda3" "D:\Softwares\anaconda3" /E /COPYALL /MOVE /Z /R:3 /W:2 /V /NP /LOG:D:\anaconda_migration.log

参数详解:

  • /E:复制所有子目录(包括空目录)
  • /COPYALL:复制所有文件信息(数据、属性、权限、所有者、审核)
  • /MOVE:移动文件(复制后删除源文件)
  • /Z:支持断点续传(传输中断可恢复)
  • /R:3:失败时重试3次
  • /W:2:重试间隔2秒
  • /V:显示详细输出
  • /NP:不显示进度百分比
  • /LOG::生成日志文件,便于排查问题

三、验证迁移结果

  1. 检查日志文件
    打开D:\anaconda_migration.log,确认所有文件迁移成功(查找ERROR关键词,确保无错误)。
    anaconda_migration.log

  2. 验证目标目录结构

    dir "D:\Softwares\anaconda3"
    

    应看到完整的Anaconda目录结构(包括Scriptsenvspkgs等子目录)。

四、创建符号链接

  1. 删除原目录(迁移后应为空)

    rmdir "D:\ProgramData\anaconda3"
    
  2. 创建符号链接

    mklink /D "D:\ProgramData\anaconda3" "D:\Softwares\anaconda3"
    
  3. 验证链接是否创建成功

    dir /AL "D:\ProgramData"
    

    应看到anaconda3显示为<JUNCTION>类型的链接。

五、修复Anaconda环境变量

  1. 更新系统环境变量
  • 打开「系统属性」→「高级系统设置」→「环境变量」在控制面板里也可以找到
  • PATH变量中,将所有D:\ProgramData\anaconda3相关路径替换为D:\Softwares\anaconda3
  • 例如:
    • 原:D:\ProgramData\anaconda3
    • 现:D:\Softwares\anaconda3
      新环境变量
  1. 更新conda配置文件
    • 解决开始菜单里Anconda Prompt失效问题:点击系统开始菜单-----找到Anaconda3目录-----选中Anaconda Prompt-----鼠标右键选中打开文件所在位置-----选中Anaconda Prompt并鼠标右键选择属性-----把目标栏里的路径更改为迁移后的路径%windir%\System32\cmd.exe "/K" D:\Softwares\anaconda3\Scripts\activate.bat D:\Softwares\anaconda3-----选择更改图标-----在弹出窗口里选择浏览迁移后的目录里的Menu文件夹里相应图标或者直接在浏览前输入地址D:\Softwares\anaconda3\Menu\anaconda-navigator.ico-----点击应用-----点击确定
      Anaconda Prompt失效解决
      Anaconda Promt恢复正常

    • 打开Anaconda Prompt,执行:

      conda init
      

      这将重新生成shell启动脚本,指向新路径。
      更新conda配置文件

六、验证Anaconda功能

  1. 测试基础命令
    打开新的Anaconda Prompt,执行:

    conda --version
    python --version
    

    应显示正确的版本信息,无路径错误。

  2. 测试环境管理

    conda env list
    

    应显示所有现有环境,路径为D:\Softwares\anaconda3\envs

  3. 创建测试环境

    conda create -n test_env python=3.9
    conda activate test_env
    

    验证新环境是否能正常创建和激活。
    新创建的test_env环境
    退出当前环境conda deactivate test_env, 删除测试环境conda env --name test_env -y
    删除test_env环境

  4. 测试Jupyter Notebook

    jupyter notebook
    

    打开浏览器,确认Notebook能正常运行且Python内核可用。如果之前的Jupyter Notebook图标失效,则可以打开任一一个目录,鼠标右键–选择在终端中打开–输入jupyter notebook右键打开文件夹
    终端里打开jupyter notebook
    在浏览器中正常打开文件

七、可能的问题及解决方案

1. 权限问题

  • 现象:安装新包时提示权限错误
  • 解决
    icacls "D:\Softwares\anaconda3" /grant:r %USERNAME%:(OI)(CI)F
    

2. 环境变量未更新

  • 现象:命令行找不到condapython
  • 解决:重启终端,或手动添加以下路径到PATH
    D:\Softwares\anaconda3
    D:\Softwares\anaconda3\Scripts
    D:\Softwares\anaconda3\Library\bin
    

3. 特定包无法导入

  • 现象ImportErrorModuleNotFoundError
  • 解决:重新安装相关包:
    conda install <package-name>
    

八、最终确认

  1. 检查注册表路径

    • 打开regedit,搜索D:\ProgramData\anaconda3
    • 将找到的路径替换为D:\Softwares\anaconda3(谨慎操作,建议先备份注册表)
  2. 删除临时备份
    确认所有功能正常后,可删除临时备份:

    rmdir /S /Q "D:\Anaconda_Backup"
    

注意事项

  • 管理员权限:所有操作必须以管理员身份执行,尤其是创建符号链接和修改环境变量。
  • 断点续传:若迁移过程中断,可重复执行Robocopy命令,它会自动跳过已复制的文件。
  • 数据安全:建议在迁移前导出所有Conda环境:
    conda env export > environment.yml
    

通过以上步骤,Anaconda应能无缝迁移到新目录,同时保持所有功能和环境配置不变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值