2015-04-17 86 views
2

我使用前綴(即ABCD *)複製文件列表以匹配批處理腳本中的文件。然而,看起來匹配的一些文件正在被拋在後面,而其他不匹配的文件正在被抓取。Windows短名稱與長名稱不匹配

我跑了DIR/X和發現,對於文件的一把短名稱不符合他們的LONGNAME:

4/17/2015 02:04 PM 554 ABCDEF~1.TXT  abcdefghijklmnopqrs.txt 
4/17/2015 02:08 PM 123 ABCDEF~2.TXT  1234567890.txt 
4/17/2015 03:18 PM 233 987654~1.TXT  abcdefg123456.txt 

任何想法,爲什麼這樣的事情會發生,以及如何解決它?

+0

希望澄清一下,上面的數據只是一個例子。這些文件來自外部源,然後根據文件名的前4個字符移動到特定的目錄中。這樣做的腳本將沒有機會重命名文件的短名稱。如果腳本只能使用長名稱(而不是長名稱和短名稱),那將是理想的。 – R3dChief

+0

請在你的問題中編輯一個真實的例子,並揭示你真正想要做什麼。 'copy ABCD *'匹配長名或短名;在你構建的人造範例中,第一個和第三個將被複制,但第二個,'abcd *'與任何名稱都不匹配。 – Magoo

+0

在我的有限測試中,'DIR'和'COPY'匹配長文件名和8.3名稱的通配符。因此,在上面的示例數據中,對於'ABCD *',所有三個文件都將被複制。 – aphoria

回答

2

更改短文件名,你可以指定ABCDEFG*來解決此問題。

編輯

由於上述建議是不是一種選擇,你可以使用FSUTIL刪除所有的8.3名。

該命令將分析當前目錄(.)中的文件並顯示更改而不實際製作它們。

fsutil 8dot3name strip /t . 

刪除/t參數以實際刪除8.3名稱。

您還可以運行:

fsutil 8dot3name strip 

看到所有的選項。

+0

這是我的情況的最佳選擇,因爲該條可以在移動之前執行。謝謝。 – R3dChief

1

長短文件名不需要匹配。默認算法在「NTFS如何生成簡短文件名」中記錄爲here。您還可以找到它在wikipedia

如果你的樣本數據代表實際的文件,您可以用

fsutil file setshortname longFileName shortFileName