文件類型操作的 Windows 檔名參數處理

文件類型操作的 Windows 檔名參數處理

我有一個工具,已新增至 HKEY_CLASSES_ROOT 下的任何檔案項目的 shell 子項中,以便它出現在任何檔案的右鍵選單中(目錄選單中也有此工具)。

[HKEY_CLASSES_ROOT\*\shell\PathToClipboard]
@="Path -> Clipboard"

[HKEY_CLASSES_ROOT\*\shell\PathToClipboard\command]
@="C:\\Program Files (x86)\\PathToClipboard.exe %1"

該工具只不過是將給定參數(檔案路徑)複製到剪貼簿。

這至少自 Win ME 以來一直有效(可能從那時起已重新編譯)。它也適用於 win-7,但有一些怪癖:如果檔案路徑確實包含空格或任何其他非字母數字字符,它將縮短為 DOS 相容性名稱。

例如:C:\PROGRA~2\PATHTO~1.EXE

有沒有解決的辦法?

如果我放置"%1路徑是正確的,但Windows也會將其傳遞"給程式(我已經有一段時間沒有接觸過。當然我可以在工具中解決這個問題,但我想知道粗略的行為是否可以在Windows端修復) 。

答案1

如果程式名稱包含空格或其他非字母數字字符,則會縮寫為 DOS 相容性名稱。

@="C:\\Program Files (x86)\\PathToClipboard.exe %1"

引號應該圍繞著各個部分,而不是整個字串。

在這種特殊情況下,您應該只引用第一部分(程式名稱)整個字串:

@="\"C:\\Program Files (x86)\\PathToClipboard.exe\" %1"

筆記:

  • \用於轉義內部引號(程式名稱周圍的引號)
  • 如果您也引用%1(檔案路徑),當檔案路徑傳遞給程式時,它會加上引號,因此不要引用這部分。

相關內容