知方号

知方号

电脑上AppData数据迁移(解决C盘空间不足的问题)<用户文件夹怎么转移到其他盘里>

电脑上AppData数据迁移(解决C盘空间不足的问题)

前言

电脑使用时间一长,C盘就会空间不够用,其中大部分都是AppData文件夹占用的,我们就可以迁移

我们可以使用WizTree这个软件来查看磁盘空间占用情况。

https://www.diskanalyzer.com/

方式1(推荐)

完全迁移Users文件夹

开机情况下点击

更新和安全 => 恢复 => 高级启动

重启后点击高级选项

点击命令提示符

如果没有可以使用PE进行操作

PE中自带的cmd没有robocopy命令,可以使用C:WindowsSystem32下的cmd.exe

输入命令

代码语言:javascript复制# 将USer复制到自己的其它盘我是D盘robocopy "C:Users" "D:Users" /E /COPYALL /XJ # 复制完成之后将原有文件重命名ren "C:Users" "Users2" # 建立软连接mklink /J "C:Users" "D:Users"

重启后可以删除Users2

代码语言:javascript复制rd /s /q C:Users2

注:如果重启不了,那么通过以下方式恢复

重启3次进入恢复命令行

代码语言:javascript复制# 删除软连接rmdir "C:Users" /S /Q# 将之前重命名的文件夹变回员Userren "C:Users2" "Users"方式2

只更改AppData文件夹

这种方式会导致部分软件无法运行。

进入注册表

代码语言:javascript复制regedit.exe

处理的注册表位置

代码语言:javascript复制HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorerShell FoldersHKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorerUser Shell Folders

把其中和AppData相关的键值改为新位置即可。

这种方法并不能完全替换完。

AppData

代码语言:javascript复制%USERPROFILE%AppDataRoaming使用代码实现代码语言:javascript复制using System;using System.IO;using System.Windows;using Microsoft.Win32;namespace appdata_migration{ /// /// MainWindow.xaml 的交互逻辑 /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); PathOriginTb.Text = GetPathOrigin(); PathTb.Text = @"D:AppData"; } //C:UsersAdministratorAppData private static string GetPathOrigin() { return Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).Replace(@"Roaming", ""); } /// /// 修改注册表 /// /// /// private void Deal(string pPath, string pathNew) { var mreg = Registry.CurrentUser; mreg = mreg.OpenSubKey(pPath, true); if (mreg == null) return; var valueNames = mreg.GetValueNames(); foreach (var valueName in valueNames) { var value = mreg.GetValue(valueName).ToString(); if (!value.Contains("AppData")) continue; var preStr = value.Substring(0, value.IndexOf("AppData", StringComparison.Ordinal) + "AppData".Length ); var newStr = value.Replace(preStr, pathNew); Console.WriteLine(valueName); Console.WriteLine(newStr); mreg.SetValue(valueName, newStr); } } private void DealClick(object sender, RoutedEventArgs e) { var pathTbText = PathTb.Text; if (!Directory.Exists(pathTbText)) { MessageBox.Show("文件夹不存在"); } else { Deal(@"SOFTWAREMicrosoftWindowsCurrentVersionExplorerShell Folders", pathTbText); Deal(@"SOFTWAREMicrosoftWindowsCurrentVersionExplorerUser Shell Folders", pathTbText); } } }}

页面

代码语言:javascript复制 开始处理

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。