如何修复 Windows 中的“文件名太长”问题

如果您曾经遇到过这个问题,那么它可能对您来说是一个简单的解决方法。如果您已经两次以上看到此错误,那么您也知道有时修复它可能是一个复杂的问题。

我们希望您只遇到简单的修复类型,但我们会为您准备不太容易的,保证也可以修复。

为什么文件名长度在 Windows 中甚至是一个问题?(Why Is Filename Length Even An Issue In Windows?)

对于像Windows(Windows)这样的操作系统来说,文件名长度一直是个问题。曾经有一段时间,文件名不能超过 8 个字符加上 3 个字符的文件扩展名。你能做的最好的事情就是myresume.doc。这是文件系统设计的限制。

随着新版本Windows(Windows)的推出,情况变得更好。我们从一个旧的、有限的文件系统转变为一种称为新技术文件系统(New Technology File System)( NTFS ) 的东西。NTFS将我们带到了一个文件名可能有 255 个字符长的地步,而文件路径长度可能会达到 32,767 个字符。那么我们怎么可能有太长的文件名呢?

Windows有称为系统变量的东西。这些是 Windows 运行所依赖的变量(Windows)因为Windows将始终知道变量的含义以及它们的位置,即使我们在各处移动位和字节也是如此。系统变量MAX_PATH是将文件名和文件路径限制在 260 个字符以下的变量。

作为一个变量,你会认为我们可以改变它。不,我们不应该。这就像从毛衣中拉出一根线。一旦一个系统变量发生变化,其他系统变量和依赖于它们的组件就会开始分解。

那我们该如何解决呢?

轻松修复(The Easy Fix)

如果你幸运的话,你会得到错误并且确切地知道是什么文件名导致了这个问题。或者至少在哪里可以找到文件。也许你有一个看起来像这样的文件名:

C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx

在这种情况下,罪犯是谁很明显。在Windows Explorer(Windows Explorer)Windows 10中调用的文件资源管理(File Explorer)器中找到该文件,单击一次,按F2重命名它,然后将那个愚蠢的文件名更改为更合理的名称。问题(Problem)解决了。

不太容易的修复(The Less Easy Fixes)

解决这个问题并不总是那么容易。有时您可能出于某种原因无法更改文件或目录的名称。

以下解决方案将为您解决问题。它们并不难做到。

(Move)使用 PowerShell(Or Copy Files Or Directories Using PowerShell)移动删除(Delete)或复制文件或目录

有时,您在尝试移动、删除或复制文件路径字符数超过 260 个的目录时会出错。

请注意,目录和文件夹这两个词是可以互换的。我们将继续使用“目录”。以下PowerShell cmdlet 也可用于文件。

也许文件路径看起来像:

C:\Users\guymc\Documents\This\Is\Exactly\The\Precise\Directory\Path\That\I\Need\To\Have\To\Keep\My\Files\Sorted\In\A\Manner\That\Makes\Sense\To\Me\So\Lets\Pretend\This\Is\An\Actual\Filepath\That\You\Might\Also\Have\On\Your\Windows\Computer\And\Not\Over\Think\It\Document.docx

该文件路径长度为 280 个字符。所以我们不能用普通的复制粘贴方法将目录从那里复制到其他地方。我们得到目标路径太长(Destination Path Too Long)错误。

让我们假设无论出于何种原因,我们都无法重命名嵌套文件的目录。我们做什么?

打开 PowerShell(Open PowerShell)。如果您还没有使用过PowerShell,请阅读我们的文章《为家庭用户使用 PowerShell - 初学者指南》(Using PowerShell for Home Users – A Beginner’s Guide)。不过,您可以在不阅读文章的情况下执行后续步骤。

PowerShell打开时,您将位于用户目录的根目录。继续假设C:\Users\guymc (Follow)您的用户目录。

名为This的目录位于Documents目录中。要进入Documents目录,我们使用DOS命令cd Documents。 

您将看到提示更改为C:\Users\guymc\Documents。那挺好的。我们正在靠近目录,这将使事情变得更容易。

使用 Copy-Item 复制目录

我们要将目录This及其内容复制到ThatNewFolder中。让我们使用带有参数-Destination-Recurse的 PowerShell cmdlet Copy-Item

-Destination 告诉PowerShell我们希望副本在哪里。-Recurse 告诉PowerShell将里面的所有项目复制到目标。复制将原件留在原处,并在目的地制作所有新的。

Copy-Item This -Destination ThatNewFolder -Recurse

使用 Move-Item 移动目录

假设我们要将目录 This 以及其中的所有目录和文件移动到ThatNewFolder。移动不会将原件留在原处。

我们可以使用带有参数-Path-Destination的 PowerShell cmdlet Move-Item。-Path 定义我们想要移动的项目,而-Destination告诉PowerShell我们想要它的位置。 

该 cmdlet 会将 This 放入ThatNewFolder中。它还将移动 This 目录中的所有内容。Move-Item 可用于移动文件或目录,无论文件路径或文件名长度如何,它都能正常工作。

Move-Item -Path This -Destination ThatNewFolder

为确保它正常工作,请使用cd ThatNewFolder命令进入ThatNewFolder。然后使用dir命令列出ThatNewFolder中的目录。你会看到这个目录在那里。

使用 Remove-Item 删除目录

如果我们要删除(This )目录及其中的所有内容,我们使用Remove-Item cmdlet。

Remove-Item cmdlet 具有一些内置的安全性,因此很难删除其中包含内容的目录。在我们的示例中,我们知道我们要删除所有内容,因此我们将使用参数-Recurse使其删除内部所有内容,并使用-Force使其执行此操作,而不询问我们是否确定其中的每个项目。

被警告!恢复以这种方式删除的任何内容将非常困难。您可以尝试如何恢复意外删除的文件中的方法,但不要期望太多。

Remove-Item This -Recurse -Force

您可以再次使用 dir 命令以确保它已消失。

使 Windows 10 接受长文件路径(Make Windows 10 Accept Long File Paths)

如果您知道您将反复使用长文件路径和长文件名,那么让Windows为您工作会更容易。每天使用PowerShell完成工作毫无意义。

我们有两种方法可以做到这一点。一种适用于Windows 10 家庭(Home)版用户,另一种适用于Windows 10 专业版(Pro)企业版(Enterprise)用户。这些方法可能适用于Windows 8.1或更早版本,但我们不能保证。

使(Make)Windows 10家庭版接受长文件路径(Home Accept Long File Paths)

要让Windows 10 Home接受长文件路径,我们需要打开注册表编辑器(Registry Editor)。如果您以前没有在注册表编辑器(Registry Editor)中工作过,请小心。不小心删除或更改此处的内容可能会使Windows无法完全正常工作。

在进行任何更改之前,请务必备份您的注册表。在我们的备份和恢复 Windows 注册表终极指南中( Ultimate Guide to Backing Up and Restoring the Windows Registry)了解您需要了解的所有内容。

打开注册表编辑器(Editor)并进行备份后,导航到位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem并找到键LongPathsEnabled

双击LongPathsEnabled。在值数据:(Value data:)字段中,确保数字1在那里。单击确定(OK)以提交更改。

退出注册表编辑器(Registry Editor),您现在应该可以使用疯狂的长文件路径了。

(Make)Windows 10专业版或企业版接受长文件路径(Pro Or Enterprise Accept Long File Paths)

为了允许Windows 10 专业版(Pro)企业版(Enterprise)使用长文件路径,我们将使用组策略编辑器(Group Policy Editor)。它是一个工具,允许我们设置有关 Windows 如何在计算机和用户级别运行的策略。

我们有几篇关于使用组策略执行诸如禁用或启用 Internet Explorer 选项( disabling or enabling Internet Explorer options)向登录屏幕添加消息的( adding a message to the logon screen)文章。

通过转到开始(Start)菜单并输入gpedit打开组策略编辑器(Group Policy Editor)。最上面的结果应该是Edit group policy。双击它。

组策略编辑器(Group Policy Editor)打开后,导航到Computer Configuration > Administrative Templates > System > Filesystem。在那里你会看到策略Enable Win32 long paths

双击它以编辑策略设置。将其从Disabled更改为Enabled,然后单击OK按钮提交更改。 

该政策可能不会立即生效。不过,您可以强制组策略更新( force the group policy to update)

就是这样(That’s It)

还有一些其他方法可以解决长文件名和文件路径,但我们在这里经历的是最简单、最有效的方法。



About the author

我是一名技术人员,多年来一直在音频和用户帐户领域工作。我有使用 Windows 和 Mac 电脑以及苹果产品的经验。自 2007 年以来,我还一直在教授 Apple 产品的使用。我的主要专业领域是用户帐户和家庭安全。除此之外,我还使用过各种软件程序,包括 Windows 7 Home Premium、8.1 Pro、10 Pro 和 12.9 Mojave。



Related posts