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

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

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

![Process Monitor :: Event Properties](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/88da8a81ce3129d0c505-image_3.png)

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

**發生的原因**

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

**解決的方法**

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

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

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

![當我改完目錄名稱後，盡然目錄變成了兩個「完全同名」的目錄 ( 因為目錄前的空白檔案總管不會顯示 )，也就是說那個無效的目錄「刪不掉」啊！](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/0eee9e3937e884c5e76b-image_6.png)

而且我從**命令提示字元**模式也無法進入刪除該目錄、也無法「進入」該目錄，這時我就想起我去年寫的一篇 \[ [無法刪除不合法檔名的檔案](/post/2008/01/19/How-to-delete-file-with-invalid-filename) \] 文章，利用 8.3 短檔名 進行刪除動作，我用了最狠毒的刪除法：

```
rmdir /s /q olxxxx~2.tw
```

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