繁体   English   中英

在长模式下复制短8.3文件名(Windows)

[英]Copy short 8.3 filename in long mode (Windows)

尝试从命令行将名为“ 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> > "SFN\SCOOTE~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:\Test\SFN

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文件和一个名为 Scooter - Cosmos.txt SCOOTE~1.TXT请注意 :该短名称在该阶段使用)。 另外,目录SFN包含一个名为SCOOTE~1.TXT的文件-因为此名称“适合” 8.3格式,所以它没有单独的短名称。

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

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

单实例修复

eryksun建议的那样,您可以使用fsutil file setshortname命令通过更改当前目录中文件的短名称来解决一次性冲突:

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 "SFN\SCOOTE~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命令一次从所有文件中删除 8.3格式的短名称:

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:\Users\xxxxxxxx\AppData\Local\Temp\8dot3_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 "SFN\SCOOTE~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

注意 :此命令的第一阶段– Scanning registry... –可能需要一些时间,因为它正在通过注册表查找要删除的8.3格式名称的引用。 看到fsutil 8dot3name strip /? 有关此命令的更多详细信息。

注意( 两种方法均适用

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

此命令从卷中永久删除8dot3文件名。 它将列出指向剥离的8dot3names的注册表项,但不会修改受影响的注册表项。 完整路径名超过最大路径长度(260个字符)的文件将不会进行剥离。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM