在远程(Windows)中复制简短的8.3文件名



尝试从命令行复制一个名为" scoote〜1.txt"的文件,其中有一个名为" scooter -cosmos.txt"的文件夹。

问题是,副本也将" scooter -cosmos.txt"的名称签给" scoote〜1.txt",并会问我是否要覆盖该文件。

我如何在不影响其他长名文件的情况下从字面上复制" scoote〜1.txt"?接受外部命令行工具的建议。

问题的恢复

c:Test> > "Scooter - Cosmos.txt" echo File with long name
c:Test> md SFN
c:Test> > "SFNSCOOTE~1.TXT" echo File with short name
c:Test> dir/s/x
 Volume in drive C is OS
 Volume Serial Number is BE3C-8BC1
 Directory of c:Test
22/09/2017  08:51    <DIR>                       .
22/09/2017  08:51    <DIR>                       ..
22/09/2017  08:50                21 SCOOTE~1.TXT Scooter - Cosmos.txt
22/09/2017  08:51    <DIR>                       Test
               1 File(s)             21 bytes
 Directory of c:TestSFN
22/09/2017  08:51    <DIR>                       .
22/09/2017  08:51    <DIR>                       ..
22/09/2017  08:51                22              SCOOTE~1.TXT
               1 File(s)             22 bytes
     Total Files Listed:
               2 File(s)             43 bytes
               5 Dir(s)  104,170,942,464 bytes free

在这里,当前目录具有一个文件,其中 Scooter - Cosmos.txt long-name SCOOTE~1.TXT short-name note :简短-NAME在此阶段已经到位)。另外,目录SFN包含一个称为 SCOOTE~1.TXT的文件 - 因为此名称以8.3格式"拟合",所以它没有单独的短名称。

如果我们现在尝试将此文件复制到当前目录中,因为复制文件的简短/唯一名称匹配已经存在的文件的短名称,则提示有关覆盖的提示:

c:Test> copy "SFNSCOOTE~1.TXT"
Overwrite c:TestSCOOTE~1.TXT? (Yes/No/All): n
        0 file(s) copied.

单件固定

as eryksun 建议,您可以使用 fsutil file setshortname命令通过更改当前目录中的文件的 short-name 来解决一次性冲突:

c:Test> fsutil file setshortname "Scooter - Cosmos.txt" SCOOTE~2.TXT
c:Test> dir/x
 Volume in drive C is OS
 Volume Serial Number is BE3C-8BC1
 Directory of c:Test
22/09/2017  09:09    <DIR>                       .
22/09/2017  09:09    <DIR>                       ..
22/09/2017  08:50                21 SCOOTE~2.TXT Scooter - Cosmos.txt
22/09/2017  08:51    <DIR>                       SFN
               1 File(s)             21 bytes
               3 Dir(s)  104,168,501,248 bytes free
c:Test> copy "SFNSCOOTE~1.TXT"
        1 file(s) copied.
c:Test> dir/x
 Volume in drive C is OS
 Volume Serial Number is BE3C-8BC1
 Directory of c:Test
22/09/2017  09:09    <DIR>                       .
22/09/2017  09:09    <DIR>                       ..
22/09/2017  08:50                21 SCOOTE~2.TXT Scooter - Cosmos.txt
22/09/2017  08:51                22              SCOOTE~1.TXT
22/09/2017  08:51    <DIR>                       SFN
               2 File(s)             43 bytes
               3 Dir(s)  104,168,464,384 bytes free

在这里,我们可以看到Scooter - Cosmos.txt的简称已更改,因此它不再与SCOOTE~1.TXT发生冲突。该副本没有任何警告,两个文件都在当前目录中并排放置。

多种现实修复

如果(或可能发生)与目标目录中的文件发生了几次冲突,则另一种方法是将fsutil 8dot3name strip命令使用到 emove 一次:

c:Test> fsutil 8dot3name strip .
Scanning registry...
Total affected registry keys:                   0
Stripping 8dot3 names...
Total files and directories scanned:            2
Total 8dot3 names found:                        1
Total 8dot3 names stripped:                     1
For details on the operations performed please see the log:
  "C:UsersxxxxxxxxAppDataLocalTemp8dot3_removal_log @(GMT 2017-09-22 08-36-00).log"
c:Test> dir/x
 Volume in drive C is OS
 Volume Serial Number is BE3C-8BC1
 Directory of c:Test
22/09/2017  09:36    <DIR>                       .
22/09/2017  09:36    <DIR>                       ..
22/09/2017  08:50                21              Scooter - Cosmos.txt
22/09/2017  09:33    <DIR>                       SFN
               1 File(s)             21 bytes
               3 Dir(s)  104,154,349,568 bytes free

可以看出,文件Scooter - Cosmos.txt不再具有短名,因此当SCOOTE~1.TXT复制到当前目录中时没有冲突:

c:Test> copy "SFNSCOOTE~1.TXT"
        1 file(s) copied.
c:Test> dir/x
 Volume in drive C is OS
 Volume Serial Number is BE3C-8BC1
 Directory of c:Test
22/09/2017  09:40    <DIR>                       .
22/09/2017  09:40    <DIR>                       ..
22/09/2017  08:50                21              Scooter - Cosmos.txt
22/09/2017  08:51                22              SCOOTE~1.TXT
22/09/2017  09:33    <DIR>                       SFN
               2 File(s)             43 bytes
               3 Dir(s)  104,151,703,552 bytes free

NOTE :此命令的第一阶段 - Scanning registry... - 可能需要一些时间,因为它通过注册表查找对即将删除的8.3 format名称的参考。有关此命令的更多详细信息,请参见fsutil 8dot3name strip /?

谨慎(适用于两种方法))

fsutil 8dot3name strip /?命令的帮助:

此命令永久从您的卷中删除8DOT3文件名。它 将列出指向剥离的8dot3names的注册表键,但 不会修改受影响的注册表键。剥离不会 在完整路径名的文件上执行比最大路径更长的文件 长度为260个字符。

这两个命令都修改(或删除)所选文件的8.3格式名称。如果您对相关文件有任何参考(在注册表,配置文件或.BAT文件等中的其他位置等),则这些引用将不再有效。使用任何一种解决方案,请谨慎

相关内容

  • 没有找到相关文章

最新更新