我想要做什么?
我正在将文件夹的“位置”更改AppData/Roaming
为同一磁盘的另一个分区,如下面的屏幕截图所示。
屏幕截图以蓝色背景显示目标文件夹的目标地址。窗口为“漫游属性”,所选选项卡为“位置”。
AppData 占用了太多空间,我的“Windows 10”分区几乎没有空间了,如下面的屏幕截图所示。
屏幕截图显示“设备和单位”。
但实际上发生了什么?
我得到的是下面屏幕截图中显示的错误。
它的标题是:“无法将文件夹移动到此处”,并继续说道:
“无法将文件从 X 复制到 Y 。当 origin 或 destiny 文件夹中的一个或多个文件的文件名长度超过 256 个字符时,就会发生这种情况。该操作已被用户取消。”
我已尝试做过什么了?
- 在 SuperUser 上找不到答案;
- 我试图将 LongPathsEnabled 更改为 1,但它已经是 1;
- 我在做自己的实验时注意到,
AppData/Roaming/Microsoft
子文件夹无法重命名、删除或移动,这可能是导致错误的原因。即使使用提升权限,我也无法对其进行任何操作cmd
。因此,它可能阻止了文件夹新地址的设置AppData/Roaming
。
问题:
如何解决 256 个字符的错误,以便正确移动AppData/Roaming
文件夹?
一般来说,更改 Windows系统文件夹位置并不是一个好主意,尽管可以这样做。如果某个特定应用程序使 AppData 过大,请尝试重新定位该应用程序。
使用WinDirStat或其他工具来分析文件夹和子文件夹并找出消耗驱动器空间的罪魁祸首,然后移动该应用程序的数据。
例如, AppData/Roaming 中的Thunderbird电子邮件客户端配置文件可能有数百兆字节,甚至几千兆字节。可以使用其配置文件管理器轻松将其移动到其他地方。
因此,除了警告之外(是的,这是一个坏主意,特别是对于 %appdata%,因为它是虚拟映射的),还有几种方法可以处理 256 个字符的路径限制。
第一个也是最适用于您的方法是使用 执行递归复制
robocopy
。Robocopy是一个复杂的应用程序,旨在提供“强健复制”功能,类似于您在 Linux 的rsync中看到的功能。您需要花一些功夫才能找到所需的确切选项集,但 robocopy 默认不会将文件操作限制为路径少于 256 个字符的对象(除非您使用开关/256
)。您可以在几乎任何复制应用程序中使用另一种更传统的方法是使用subst命令来缩短路径。例如,该命令
subst b: c:\users\UserName\AppData\Roaming
会将漫游目录映射到驱动器标签 b:,因此当您从 b: 复制时,路径会短约 30 个字符。