簡體   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