电脑使用时间一长,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复制 开始处理