題 如何強制Windows重命名具有特殊字符的文件?


我有一首Windows無法播放的歌曲,因為文件名中有一個問號。

"Where Have All the Cowboys Gone?.ogg" // as an example

所以我嘗試重命名它,Windows抱怨我是在Explorer中還是在命令提示符下嘗試它。

我在嘗試複製,重命名或移動時遇到的錯誤是:

文件名,目錄名稱或卷標語法不正確

有沒有 視窗 在這種情況下強制重命名的方法?

更新

我會密切關注這個問題,但經過13次回答和多次嘗試(除了形成第三方解決方案)之後,似乎Windows無法做到這一點(或者至少我的窗口不能,沒有短名稱)。所以我接受的答案是我原來的解決方案,無論如何使用Linux。很高興看到Windows以某種方式處理這個問題,所以不要因為我接受了這個答案而停止,問題仍然存在!


80


起源


請問你是怎麼進入這個州的? Windows通常不會讓你這樣做。 - Michael Kohne
答案是我從Linux機器中獲取了該文件。它實際上也是一個.ogg文件。但我想知道,因為我在工作,並沒有得到我的Linux如何在Windows中做... ...很高興知道 - codeLes
文件系統NTFS允許Windows沒有的某些字符。如果Windows遇到這樣的文件,它就是b0rks。 - Colonel Panic
我曾經有一個flashdrive壞了,chkdsk將文件移動到一個不同的扇區,但保留了包含有趣的字符,如CRLF甚至退格的損壞的名稱。 :) - Nulano
@IvanChau:不重複。另一個問題是關於名稱中的空間,事實上,這是一塊蛋糕,不像這裡的那個(帶有通配符)。 - Sz.


答案:


抓住linux live-cd並使用它。


42



從家裡我無論如何都使用linux ...文件在便攜式硬盤上,我只是想知道Windows是否可以處理它......就像<b> Sudo </ b> windows命令之類的東西 - codeLes
這是一個通配符問題,而不是權限問題。在Linux下,幾乎所有東西都是Windows下的文件名(包括換行符)中的有效字符,有一組保留字符,沒有有效的方法來逃避它們。 - salmonmoose
確保live CD發行版具有可靠的NTFS支持。我現在還不確定它是怎麼回事,但我記得有一段時間它有點兒馬車了。 - Josh Hunt
最近像ubuntu這樣的Linux發行版成功地支持了NTFS最重要的功能。 - Atmocreations
Ubuntu 9.04在NTFS支持下絕對完美無缺,有一兩個煩惱(比如斷電,你啟動進入ubuntu以節省幾秒的啟動時間,直到你重新啟動它才能訪問你的windows分區) - Phoshi


您是否嘗試過使用其名稱的短文件名版本?例如

ren whereh~1.ogg where.ogg

如果它是當前文件夾中以前幾個字母開頭的唯一文件,則使用名稱的前6個字母(忽略空格),然後使用波浪號(〜),然後使用1。


29



由於短名稱的生成是可選的,具體取決於Windows當前的配置方式,因此Murphy表示OP已關閉短名稱,文件將沒有。要了解任何文件的短名稱,請使用DIR / X,它將添加一列顯示與長名稱不同的任何文件的短名稱(如果有的話)。如果有一個簡短的名字,這將是一個似是而非的答案。 - RBerteig
你真的應該嘗試一下......短文件名有時候很有用。 - alex
沒有短名稱,嘗試過你的例子,dir / x也證明沒有任何列出。 - codeLes


  1. 在Windows 7中:在管理員模式下運行cmd.exe。
  2. 使用文件名進入目錄。
  3. run:chkdsk / V / f [我的壞文件在OS驅動器以外的其他驅動器上,所以它能夠卸載它。如果它是OS驅動器,它可能必須在啟動時執行此階段。]
  4. 等待(可能必須重啟)。

正如您將看到的結果是chkdsk實際上為我刪除了文件。所以,如果你想保留文件,我不知道該怎麼做,但這肯定會擺脫這些文件。

結果/ Cmd日誌:

E:\islag\Music\llb>dir
 Volume in drive E is FreeAgent Drive
 Volume Serial Number is 5038-892A

 Directory of E:\islag\Music\llb

02/02/2011  12:18 PM    <DIR>          .
02/02/2011  12:18 PM    <DIR>          ..
04/04/2010  02:19 PM         4,014,099 01 Los Lonely Boys - Se?orita - www.file2
4ever.com.mp3
04/04/2010  02:18 PM         3,125,942 12 Los Lonely Boys - La Contestaci?n - ww
w.file24ever.com.mp3
               2 File(s)      7,140,041 bytes
               2 Dir(s)  87,743,991,808 bytes free

E:\islag\Music\llb>chkdsk /V
The type of the file system is NTFS.
Volume label is FreeAgent Drive.

WARNING!  F parameter not specified.
Running CHKDSK in read-only mode.

CHKDSK is verifying files (stage 1 of 3)...
  231424 file records processed.
File verification completed.
  34 large file records processed.
  0 bad file records processed.
  0 EA records processed.
  0 reparse records processed.
CHKDSK is verifying indexes (stage 2 of 3)...
18 percent complete. (29338 of 245164 index entries processed)
An invalid filename 01 Los Lonely Boys - Se?orita - www.file24ever.com.mp3 (3196
6) was found in directory 31962.
All filenames for File 31966 are invalid.
Minor file name errors were detected in file 31966.
An invalid filename 12 Los Lonely Boys - La Contestaci?n - www.file24ever.com.mp
3 (31973) was found in directory 31962.
All filenames for File 31973 are invalid.
Minor file name errors were detected in file 31973.
73 percent complete. (233817 of 245164 index entries processed)
Index entry 01 Los Lonely Boys - Se?orita - www.file24ever.com.mp3 in index $I30
 of file 31962 is incorrect.
Index entry 12 Los Lonely Boys - La Contestaci?n - www.file24ever.com.mp3 in ind
ex $I30 of file 31962 is incorrect.
  245164 index entries processed.
Index verification completed.

Errors found.  CHKDSK cannot continue in read-only mode.

E:\islag\Music\llb>dir
 Volume in drive E is FreeAgent Drive
 Volume Serial Number is 5038-892A

 Directory of E:\islag\Music\llb

02/02/2011  12:18 PM    <DIR>          .
02/02/2011  12:18 PM    <DIR>          ..
04/04/2010  02:19 PM         4,014,099 01 Los Lonely Boys - Se?orita - www.file2
4ever.com.mp3
04/04/2010  02:18 PM         3,125,942 12 Los Lonely Boys - La Contestaci?n - ww
w.file24ever.com.mp3
               2 File(s)      7,140,041 bytes
               2 Dir(s)  87,743,991,808 bytes free

E:\islag\Music\llb>chkdsk /V /f
The type of the file system is NTFS.
Cannot lock current drive.

Chkdsk cannot run because the volume is in use by another
process.  Chkdsk may run if this volume is dismounted first.
ALL OPENED HANDLES TO THIS VOLUME WOULD THEN BE INVALID.
Would you like to force a dismount on this volume? (Y/N) y
Volume dismounted.  All opened handles to this volume are now invalid.
Volume label is FreeAgent Drive.

CHKDSK is verifying files (stage 1 of 3)...
  231424 file records processed.
File verification completed.
  32 large file records processed.
  0 bad file records processed.
  0 EA records processed.
  0 reparse records processed.
CHKDSK is verifying indexes (stage 2 of 3)...
18 percent complete. (29339 of 245164 index entries processed)
Deleted invalid filename 01 Los Lonely Boys - Se?orita - www.file24ever.com.mp3
(31966) in directory 31962.
File 31966 has been orphaned since all its filenames were invalid
Windows will recover the file in the orphan recovery phase.
Correcting minor file name errors in file 31966.
Deleted invalid filename 12 Los Lonely Boys - La Contestaci?n - www.file24ever.c
om.mp3 (31973) in directory 31962.
File 31973 has been orphaned since all its filenames were invalid
Windows will recover the file in the orphan recovery phase.
Correcting minor file name errors in file 31973.
73 percent complete. (233642 of 245164 index entries processed)
Deleting index entry 01 Los Lonely Boys - Se?orita - www.file24ever.com.mp3 in i
ndex $I30 of file 31962.
Deleting index entry 12 Los Lonely Boys - La Contestaci?n - www.file24ever.com.m
p3 in index $I30 of file 31962.
  245164 index entries processed.
Index verification completed.
CHKDSK is scanning unindexed files for reconnect to their original directory.
  2 unindexed files scanned.
CHKDSK is recovering remaining unindexed files.
  2 unindexed files recovered.
CHKDSK is verifying security descriptors (stage 3 of 3)...
  231424 file SDs/SIDs processed.
Cleaning up 41 unused index entries from index $SII of file 9.
Cleaning up 41 unused index entries from index $SDH of file 9.
Cleaning up 41 unused security descriptors.
Security descriptor verification completed.
  6871 data files processed.
CHKDSK is verifying Usn Journal...
  1116928 USN bytes processed.
Usn Journal verification completed.
Correcting errors in the master file table's (MFT) BITMAP attribute.
Windows has made corrections to the file system.

 244196000 KB total disk space.
 158175168 KB in 30003 files.
     22820 KB in 6873 indexes.
         0 KB in bad sectors.
    306168 KB in use by the system.
     65536 KB occupied by the log file.
  85691844 KB available on disk.

      4096 bytes in each allocation unit.
  61049000 total allocation units on disk.
  21422961 allocation units available on disk.

E:\islag\Music\llb>dir
 Volume in drive E is FreeAgent Drive
 Volume Serial Number is 5038-892A

 Directory of E:\islag\Music\llb

02/02/2011  12:18 PM    <DIR>          .
02/02/2011  12:18 PM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  87,743,979,520 bytes free

E:\islag\Music\llb>

23



像魅力一樣工作!謝謝 - Oren S
工作得很完美!這應該是答案。 - enb081
@ enb081不,這不應該是答案,因為它與問題沒有任何關係,這是如何 改名 文件。嘖。 - Jim Balter


chkdsk 有時會修復無效的文件名。您將收到有關刪除文件的消息,因為所有文件名都無效,然後恢復丟失的文件。然後,您可以在中找到該文件 C:\found.000\file0000.chk。這是一種有效的方法來刪除問題文件,但如果你想保留它們,這不是最好的方法。


10





嘗試指定UNC路徑(請參閱 命名文件,路徑和命名空間)。這解決了各種各樣的限制。你會用它做的 \\?\ 句法。

例如,如果您的文件位於桌面上(並且您的Windows驅動器是C :),則可以執行此操作

copy "\\?\C:\Users\codeLes\Desktop\Where Have All the Cowboys Gone?.ogg" "\\?\C:\Users\codeLes\Desktop\Where Have All the Cowboys Gone.ogg"

注意:您不能使用具有此語法的相對路徑;您必須指定完整路徑。它不適用於 ren 命令,但確實有效 copy 和 move


10



嘗試了一下,而不是運氣“文件名,目錄名或卷標語法不正確。”謝謝!我已經到了這樣的地步,我認為正確的答案是使用Linux重命名它(我已經完成了)。 - codeLes
這個答案肯定是錯的。有效字符的限制在Windows內核的NTFS驅動程序中。 \\?\只是繞過用戶模式運行時庫中的文件路徑處理。它不允許打開文件名包含5個通配符(*?“<>),其他保留字符(/ |:\)或控製字符。 - eryksun
它適用於我的情況:我有一個內部帶有Unicode字符的文件名和尾隨 \n 。不要問我如何創建它(好吧,我試圖看看你是否可以在Windows中創建具有相同名稱的多個文件)。資源管理器,FreeCommander無法刪除它 \\?\C:\... 能夠。 - Dio Phung


我刪除頑固文件的方法是打開7zip,找到文件並通過7zip重命名文件。我的歌是一首歌,文件末尾有一個空格。


9



你的意思是文件本身甚至不在存檔中,但你只是使用7-Zip在文件系統上重命名它?聰明。 - Arjan
這很好用。我在這裡嘗試了其他幾個選項,這是第一個有效的選項。 - rakensi
7zip能夠重命名您的文件,因為以空格結尾的文件名在Windows中不是問題。包含'?'的文件名是一個問題,7zip無法重命名它們。 - Jim Balter
錯誤答案 ! - user2284570
這對我來說非常合適,因為我的問題不是真正的問號,而是奇怪的Unicode字符,它只是在我的文件管理器中顯示為問號。通過將文件(有數百個)導入7-Zip存檔然後再次導出它們,7-Zip只是將壞字符轉換為下劃線(_)。然後我能夠再次使用這些文件。問題徹底解決了。謝謝你的優惠! - Jesper


使用 Recuva的。它主要用於恢復已刪除的文件,但它也可以選擇在掃描中包含未刪除的文件。

啟動Recuva後,拒絕嚮導並選擇正確的磁盤。然後轉到選項,找到並選中“掃描未刪除的文件”選項並啟動掃描。過了一會兒,它會顯示磁盤上的所有文件(無論是否刪除)。查找具有無效名稱的文件(名稱已在視圖中修復),選擇它們,右鍵單擊並保存(“恢復”)某處。

enter image description here

我剛剛完成了它(在Windows XP上)。


7





Microsoft工具DISKEDIT.EXE是一個用於直接讀取和寫入原始磁盤數據的低級工具。您應該能夠加載包含此文件的目錄條目的集群,只需更改有問題的“?”字符到無害的東西並將其寫回磁盤。

據我所知,最近在Windows 2000 SP4中看到了Microsoft diskedit工具(不是同名的Norton Utilities工具,僅適用於FAT卷)。但是可以找到它的鏈接 這裡

要找到正確的群集,您可以下載試用版 DiskExplorer for NTFS

您將從File-> Drive ...開始打開包含此錯誤文件的驅動器。選擇Goto-> Root Directory以獲取目錄視圖。使用MFT#鏈接導航到包含您的錯誤文件的目錄。當你到達那裡時,窗口頂部會出現類似“MFT#x12345 DIR:'dirname',......等等等等等等等等 x9302AE,... 等等等等等等”

現在轉到Microsoft diskedit。首先執行File-> Open ...並指定卷名C :(如果文件位於C:驅動器上)。將捲文件名留空。獲取該起始簇編號並在Read-> NTFS Clusters ...-> Starting Cluster(將其作為十六進制數字輸入)下輸入diskedit。

現在使用箭頭鍵向下滾動到錯誤的文件名。它是unicode,所以你會找到像“W.h.e.r.e..H.a.v.e .A.l.l .t.h.e..C.o.w.b.o.y.s...G.o.n.e。?... ... o.g.g”這樣的東西。將光標放在壞的“3F”字符上並鍵入安全的內容,如5F('_')。選擇Write-> It將其寫回磁盤。

還有另一個點擊(不確定是否需要一個或兩個)。現在,回到DiskExplorer,單擊Mft#作為壞文件。你會得到一個帶有樹狀物的屏幕,左邊是“結構”。單擊樹中的“屬性”。它會顯示一個屬性列表,其中一個屬於$ 30 ... $ FILE_NAME。所以,$ 30有文件名。單擊Structures樹中$ 30節點下的Body節點。選擇菜單View-> as Hex。幾行下來,你應該再次看到文件名W.h.e.r.e. .H.a.v.e ...等在屏幕的左側,您將看到Sector列,它顯示您正在查看的磁盤扇區。

回到diskedit。執行Read-> Sectors ...並從DiskExplorer輸入扇區號。和以前一樣,向下滾動並用與上面相同的字符替換“3F”字符。選擇Write-> It將其寫入磁盤。

我做了這一切,工具告訴我,我已經改變了角色,但探險家沒有。該目錄必須緩存在某處。重新啟動後,更改將變為可見。


5



為正確(但或多或少不切實際)的方法+1,希望它會冒出一點點,並至少超過一些錯誤的答案。 ;) - Sz.


嘗試使用第三方工具,如 肯重命名 工具:

Screenshot of Ken Rename

要么 重命名大師

enter image description here

這是一個文件重命名工具列表

我自己測試一下,但我運行的是Windows Vista 64位;文件處理可能不同。

如果這些工具失敗,您可能想要給予 Windows PowerShell 一槍。看到 重命名文件 在...上 Windows PowerShell博客


5



沒有嘗試過第三方工具。 - codeLes
我嘗試過Directory Opus,它沒有用(相同的錯誤信息)。 - user14068
我嘗試過Flexible Renamer 8.4,這似乎可以解決問題。來自您提到的同一網站。 - JohnnyBizzle