最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

论如何迁移C盘的用户和程序数据至其他位置 ,python编程

业界 admin 5浏览 0评论

迁移AppData
AppData 文件夹位于 C 盘路径:C:\Users\用户名\AppData,也可以在路径栏用 %LOCALAPPDATA% 快速打开该路径,该路径下包含 Local、LocalLow、Roaming 等三个文件夹,如下图,这三个文件夹中的大部分文件都是需要迁移的。

 有不少文章都用修改注册表的方式来迁移 AppData 文件夹,这种做法会将 AppData 整个文件夹迁移到其他路径,这种做法会导致部分程序无法正常运行,因此本文不采用修改注册表的方式迁移 AppData 文件夹。

Windows 中有一个命令为 mklink,它可以将特定路径链接到另一个路径,简单的说就是为文件夹建立了一个传送门机制(比如说将文件夹 A 链接到文件夹 B,当你进入文件 A 时,虽然路径显示的是 A 的路径,但实际上你是在 B 的路径下,你做的任何修改都是在 B 的路径下发生的)。mklink 命令的用法如下:

mklink [[/d] | [/h] | [/j]] Link Target
        /d        创建目录符号链接。默认为文件符号链接。
        /h        创建硬链接而非符号链接。
        /j        创建目录联接。
        Link      指定新的符号链接名称。
        Target    指定新链接引用的路径(相对或绝对)。
使用 mklink 命令建立链接的方法的最大优点就是灵活性,可以对不同的文件夹作不同的处理(比如放到不同的位置,例如放到程序本身的安装路径下,不过本文都是迁移到同一路径下);另外当有重装系统的需求时,可以放心对 C 盘直接进行格盘重装,重装后只需要重新建立链接即可快速恢复到重装系统前的状态,能够节省大量时间。

请注意同样不建议直接用 mklink 迁移整个 AppData 文件夹,这种做法同样很容易产生问题。本文推荐的做法是将 Local、LocalLow、Roaming 三个文件夹中的非系统产生的文件夹使用 mklink 命令链接到其他路径下。具体的步骤为:

将这三个文件夹中的子文件夹整个移动到其他路径(随意,但不要放在某个盘的根目录)
用 mklink 命令(使用 /d 选项)将原来的文件夹路径链接到移动后的路径
这里需要说明,如果在第一步中,没有将整个子文件夹都移动走,只是将子文件夹里面的内容移动走,那么在第二步链接时会提示路径已存在的错误。

第一步:迁移目录

第二部建立 软链接


 

了解了,如果你需要递归地处理所有层次的目录,并为每个文件创建符号链接,可以使用os.walk来遍历所有子目录和文件。以下是修改后的Python脚本:

Python复制

import os
import subprocess

# 定义源目录和目标目录
source_dir = r'K:\Tencent'
target_dir = r'C:\Users\Administrator\AppData\Roaming\Tencent'

# 确保目标目录存在
if not os.path.exists(target_dir):
    os.makedirs(target_dir)

# 递归遍历源目录下的所有文件和子目录
for root, dirs, files in os.walk(source_dir):
    # 计算当前目录相对于源目录的相对路径
    relative_path = os.path.relpath(root, source_dir)
    target_subdir = os.path.join(target_dir, relative_path)
    
    # 确保目标子目录存在
    if not os.path.exists(target_subdir):
        os.makedirs(target_subdir)
    
    # 为每个文件创建符号链接
    for filename in files:
        source_path = os.path.join(root, filename)
        target_path = os.path.join(target_subdir, filename)
        
        # 使用mklink命令创建符号链接
        subprocess.run(['mklink', target_path, source_path], shell=True)

print("Links created successfully.")

使用方法

  1. 将上述脚本内容保存到一个Python文件中,文件名为create_links.py

  2. 打开命令提示符(CMD)或PowerShell。

  3. 导航到保存脚本的目录:

    bash复制

    cd path\to\your\script
  4. 运行脚本:

    bash复制

    python create_links.py

说明

  • os.walk(source_dir):递归遍历源目录下的所有子目录和文件。

  • os.path.relpath(root, source_dir):计算当前目录相对于源目录的相对路径。

  • os.path.join(target_dir, relative_path):构建目标子目录的路径。

  • os.makedirs(target_subdir):确保目标子目录存在。

  • subprocess.run(['mklink', target_path, source_path], shell=True):使用mklink命令创建符号链接。

注意事项

  • 确保你有足够的权限来创建符号链接。在某些情况下,可能需要以管理员身份运行命令提示符或PowerShell。

  • 如果目标目录已经存在同名文件或链接,mklink命令会失败。你可以添加额外的逻辑来处理这种情况,例如删除现有的链接或文件。

希望这个脚本能够满足你的需求!

迁移AppData
AppData 文件夹位于 C 盘路径:C:\Users\用户名\AppData,也可以在路径栏用 %LOCALAPPDATA% 快速打开该路径,该路径下包含 Local、LocalLow、Roaming 等三个文件夹,如下图,这三个文件夹中的大部分文件都是需要迁移的。

 有不少文章都用修改注册表的方式来迁移 AppData 文件夹,这种做法会将 AppData 整个文件夹迁移到其他路径,这种做法会导致部分程序无法正常运行,因此本文不采用修改注册表的方式迁移 AppData 文件夹。

Windows 中有一个命令为 mklink,它可以将特定路径链接到另一个路径,简单的说就是为文件夹建立了一个传送门机制(比如说将文件夹 A 链接到文件夹 B,当你进入文件 A 时,虽然路径显示的是 A 的路径,但实际上你是在 B 的路径下,你做的任何修改都是在 B 的路径下发生的)。mklink 命令的用法如下:

mklink [[/d] | [/h] | [/j]] Link Target
        /d        创建目录符号链接。默认为文件符号链接。
        /h        创建硬链接而非符号链接。
        /j        创建目录联接。
        Link      指定新的符号链接名称。
        Target    指定新链接引用的路径(相对或绝对)。
使用 mklink 命令建立链接的方法的最大优点就是灵活性,可以对不同的文件夹作不同的处理(比如放到不同的位置,例如放到程序本身的安装路径下,不过本文都是迁移到同一路径下);另外当有重装系统的需求时,可以放心对 C 盘直接进行格盘重装,重装后只需要重新建立链接即可快速恢复到重装系统前的状态,能够节省大量时间。

请注意同样不建议直接用 mklink 迁移整个 AppData 文件夹,这种做法同样很容易产生问题。本文推荐的做法是将 Local、LocalLow、Roaming 三个文件夹中的非系统产生的文件夹使用 mklink 命令链接到其他路径下。具体的步骤为:

将这三个文件夹中的子文件夹整个移动到其他路径(随意,但不要放在某个盘的根目录)
用 mklink 命令(使用 /d 选项)将原来的文件夹路径链接到移动后的路径
这里需要说明,如果在第一步中,没有将整个子文件夹都移动走,只是将子文件夹里面的内容移动走,那么在第二步链接时会提示路径已存在的错误。

第一步:迁移目录

第二部建立 软链接


 

了解了,如果你需要递归地处理所有层次的目录,并为每个文件创建符号链接,可以使用os.walk来遍历所有子目录和文件。以下是修改后的Python脚本:

Python复制

import os
import subprocess

# 定义源目录和目标目录
source_dir = r'K:\Tencent'
target_dir = r'C:\Users\Administrator\AppData\Roaming\Tencent'

# 确保目标目录存在
if not os.path.exists(target_dir):
    os.makedirs(target_dir)

# 递归遍历源目录下的所有文件和子目录
for root, dirs, files in os.walk(source_dir):
    # 计算当前目录相对于源目录的相对路径
    relative_path = os.path.relpath(root, source_dir)
    target_subdir = os.path.join(target_dir, relative_path)
    
    # 确保目标子目录存在
    if not os.path.exists(target_subdir):
        os.makedirs(target_subdir)
    
    # 为每个文件创建符号链接
    for filename in files:
        source_path = os.path.join(root, filename)
        target_path = os.path.join(target_subdir, filename)
        
        # 使用mklink命令创建符号链接
        subprocess.run(['mklink', target_path, source_path], shell=True)

print("Links created successfully.")

使用方法

  1. 将上述脚本内容保存到一个Python文件中,文件名为create_links.py

  2. 打开命令提示符(CMD)或PowerShell。

  3. 导航到保存脚本的目录:

    bash复制

    cd path\to\your\script
  4. 运行脚本:

    bash复制

    python create_links.py

说明

  • os.walk(source_dir):递归遍历源目录下的所有子目录和文件。

  • os.path.relpath(root, source_dir):计算当前目录相对于源目录的相对路径。

  • os.path.join(target_dir, relative_path):构建目标子目录的路径。

  • os.makedirs(target_subdir):确保目标子目录存在。

  • subprocess.run(['mklink', target_path, source_path], shell=True):使用mklink命令创建符号链接。

注意事项

  • 确保你有足够的权限来创建符号链接。在某些情况下,可能需要以管理员身份运行命令提示符或PowerShell。

  • 如果目标目录已经存在同名文件或链接,mklink命令会失败。你可以添加额外的逻辑来处理这种情况,例如删除现有的链接或文件。

希望这个脚本能够满足你的需求!

发布评论

评论列表 (0)

  1. 暂无评论