The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何刪除名稱中含有無效字元的目錄

我們最近在整理伺服器,將原本在 Linux 上面的網站全部移植到 Windows 平台,由於這些網站都是 PHP + MySQL 的組合,所以我也在 IIS 上安裝了 FastCGI 模組,網站的安裝與設定大部分都正常。但就遇到其中一個網站怎麼樣都無法執行 PHP 程式 ( 靜態網頁與圖片都可以正常顯示 ),我們將此問題研究了兩天都還查不出問題,但在今天我終於利用 Process Monitor 將問題找出了。

如下圖示,看到真的當場傻眼 @_@''

Process Monitor :: Event Properties

原來目錄名稱之前包含了一個無效字元! ( 事實上是一個不可視的 Unicode 字元 )

發生的原因

  • 我們的目錄名稱是另一位同事用 Excel 整理過的,而我們的工程師在建立目錄時,為了避免打錯,所以都用「複製/貼上」的方式透過檔案總管建立目錄,誰知道其中一個目錄名稱包含奇怪的字元,神奇的是竟然檔案總管還可以建立成功,而且從外觀還看不出來。

解決的方法

你可能會想,最簡單的解決方方法就是「更改目錄名稱」對吧?那你就錯了!

當我改完目錄名稱後,盡然目錄變成了兩個「完全同名」的目錄 ( 因為目錄前的空白檔案總管不會顯示 ),也就是說那個無效的目錄「刪不掉」啊!

以下是在 命令提示字元 模式下用 dir /x 指令時顯示的畫面:

當我改完目錄名稱後,盡然目錄變成了兩個「完全同名」的目錄 ( 因為目錄前的空白檔案總管不會顯示 ),也就是說那個無效的目錄「刪不掉」啊!

而且我從命令提示字元模式也無法進入刪除該目錄、也無法「進入」該目錄,這時我就想起我去年寫的一篇 [ 無法刪除不合法檔名的檔案 ] 文章,利用 8.3 短檔名 進行刪除動作,我用了最狠毒的刪除法:

rmdir /s /q olxxxx~2.tw

這樣就成功刪除了這個詭異的目錄,不過白白損失了數小時的光陰歲月!