我創建了一個包含空格的新文件類型,並為其指定了打開命令:
assoc .php="PHP Script"
ftype "PHP Script"="c:\program files (x86)\php\php.exe" -f "%1" -- %~2
到目前為止一切順利,但現在我無法檢查使用哪個命令來開啟這種類型的檔案:
ftype "PHP Script"
File type 'PHP' not found or no open command associated with it.
我嘗試過使用插入符號,沒有效果。如何讓 ftype 接受空格來檢索目前正在使用的指令?
答案1
你這樣做是錯的。首先,閱讀 MSDN 上的一些背景知識:
當你使用時assoc .ext=fileType
,文件類型實際上是程式ID。正如上面最後一個連結所述:
ProgID 鍵名稱的正確格式是 [供應商或應用程式].[元件].[版本],用句點分隔並用沒有空間,如 Word.Document.6 所示。版本部分是可選的,但強烈建議使用。
您可以新增的文件類型描述友善類型名稱註冊表中的值。
例如:
[HKEY_CLASSES_ROOT\.txt]
@="txtfile"
"PerceivedType"="text"
"Content Type"="text/plain"
這裡。顯然是擴展和(預設)值設定為 ProgID ,即txt檔案。
[HKEY_CLASSES_ROOT\txtfile]
@="Text Document"
"FriendlyTypeName"="Text Document"
對於 ProgID,我們有(預設)值設定為文件類型描述,與友善類型名稱。一般來說,後者用於顯示本地化字串資源,並且必須格式化為間接字串(完全限定的檔案名稱和資源值,前面帶有 @ 符號,@%SystemRoot%\system32\notepad.exe,-469
例如txt檔案)。
我不知道為什麼assoc
,兩者ftype
都允許您在 fileType/ProgID 字串中使用空格,因為這違反了 MS 自己的準則。如果在註冊表中手動建立(我剛剛測試過),帶有空格的 ProgID 甚至可以正常工作,但值得注意的是,我發現沒有任何使用空格的程式創建的 ProgID。更奇怪的是,似乎如何ftype
拒絕空格,而得到數據(引號沒有幫助),而接受它們沒有問題環境首先是命令字串(設定時甚至不需要引號)。
我的猜測是有人忘記通知ftype
開發人員這種差異,因為我無法找到一種方法讓命令檢索它之前為包含空格的 ProgID 設定的命令字串。我的建議?遵守指導原則,不要在 ProgID 中使用空格,這樣就可以省去試圖找出 Windows 怪癖的痛苦。