文件名太长,Windows无法打开文件


12

网络驱动器上有一堆文件,路径相当深,大多数目录中的文件名都很长。我认为这些文件最初是由某人将这组文件的根目录从其本地工作站复制并粘贴到共享网络驱动器时创建的。我想在本地工作站上打开文件没有问题,但是现在它们位于网络上的较长路径上,因此当我双击时Windows无法打开它们。我也尝试过复制文件,并将其重命名为更短的文件,但是Windows也无法做到这一点。

TL; DR

来自某人的工作站的文件(假设的)是这样的:

C:\Documents and Settings\SomeUser\Files\RootOfLongFileNames\LongSubdirectoryName1\...\VeryLongAndDescriptiveAndSpecificFilename.xls
-----------------------------------------^

现在已被复制并粘贴到网络上,如下所示:

Q:\Dir1\Dir2\ProjectA\FilesForSomething\SomeotherDirectory\Blahblah\RootOfLongFileNames\LongSubdirectoryName1\...\VeryLongAndDescriptiveAndSpecificFilename.xls
---------------------------------------------------------------------^

现在路径对于Windows XP来说太长了。

关于如何读取这些文件的任何提示?



@bZezzz:看起来它可以逐个文件地工作,但是我正在寻找一些使所有这些对象一次都可访问的方法。复制到本地工作站是可以的,但是必须保留长文件名(它们为文件内容提供了非常特定的上下文)。另外,这里的许多用户还不够技术,无法从命令行开始打开文件。您的建议可能对我和其他人都有用。
FrustratedWithFormsDesigner 2012年

Answers:


7

尝试用SUBST.EXE替换路径。Windows随附:

C:\Users\shufler>subst /?
Associates a path with a drive letter.

SUBST [drive1: [drive2:]path]
SUBST drive1: /D

  drive1:        Specifies a virtual drive to which you want to assign a path.
  [drive2:]path  Specifies a physical drive and path you want to assign to
                 a virtual drive.
  /D             Deletes a substituted (virtual) drive.

Type SUBST with no parameters to display a list of current virtual drives.

您想要做的是用链下的文件夹之一代替驱动器号:

 C:\>subst X: Q:\Dir1\Dir2\ProjectA\FilesForSomething\SomeotherDirectory\Blahblah\RootOfLongFileNames\LongSubdirectoryName1

现在,可以在X:驱动器上访问LongSubdirectoryName1文件夹。完成后,您可以删除替换为subst X: /D

如果您一直都需要这样做,请将其添加到您的登录脚本中。

另一种方法是在映射Q:的任何位置将驱动器映射到链的更下游。


2
我最近遇到了很多问题,并且使用了SUBST方法。为此,我发现ntwind.com/software/utilities/visual-subst.html上提供的Visual Subst工具非常有价值。
yosh m 2012年

6

您需要在路径中重命名目录名称,直到名称足够短以使操作系统可以访问为止。

我将导航到第一个文件夹,您可以对其名称进行修改并将其重命名为一个字母,然后对每个后续文件夹执行相同的操作,直到获得所需的文件。

关于保持结构的必要性:我们必须在操作系统上进行一些限制,并且常规地在那些参数之外进行操作是不好的。现在,任何快速解决方案都只是一个补丁,将来需要再次运行。真正的解决方案将涉及重新组织目录结构,以便不再需要此极长的文件夹路径/文件名问题。


256个字符。
bZezzz 2012年

不,他们需要使用不是Windows资源管理器的程序,因为Windows资源管理器不遵守文件系统规范,并且懒惰地选择坚持使用最小公分母,例如,不可能简单地复制一个驱动器的现有根目录到另一个相同驱动器的根目录(容量,格式等),而不会遇到PATH TOO LONG错误。
Triynko 2012年


0

编辑:最初我建议使用robocopy,但是当然这是XP,并且没有预先安装。

您将无法“给每个人他们想要的东西”。如果文件路径太长,您将无法对其进行任何文件操作。从我的角度来看,您有几种选择:

  1. 遵循其他文章的步骤并重命名目录,直到它们简短为止。关于计算机的好处是,您可以编写脚本不仅可以为您执行此操作,还可以跟踪原始名称。即使使用脚本,这也一定会很耗时。

  2. 获取Linux LiveCD。将其放入计算机并从该CD引导。去看看Windows磁盘,它将作为一个单独的文件系统自动挂载。获取所需的所有文件,并将它们放入桌面上的新文件夹中。压缩该文件夹并将其放在外部硬盘驱动器或USB记忆棒上,或者如果您的网络驱动器允许复制回文件系统,请将其移至顶层目录。


我没有安装robocopy,并且不确定是否可以安装它(这是一台工作计算机)。同样,对于每个文件,这听起来都需要大量工作。我的示例得到了简化:实际上,几个目录的深度太深了,每个目录都包含由于路径太长而导致无法访问的文件。我真的没有时间对每个人都想要的所有文件执行此操作。
FrustratedWithFormsDesigner 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.