2009-06-16 104 views
3

我想將文件路徑作爲參數傳遞給PHP中的可執行文件,並且文件路徑可能包含空格。可執行文件似乎無法處理引用參數,所以我想也許我可以傳遞短的DOS名稱而不是長名稱。我可以從PHP獲取文件的簡短DOS名稱嗎?

PHP知道關於舊式DOS 8.3文件名的任何內容嗎?

回答

4

php/win32隨附COM/.net extension built-in。您可以使用它創建WSH FileSystemObject,然後查詢File objectShortPath property

<?php 
$objFSO = new COM("Scripting.FileSystemObject"); 
$objFile = $objFSO->GetFile(FILE); 
echo "path: ", $objFile->Path, "\nshort path: ", $objFile->ShortPath;
打印例如
path: C:\Dokumente und Einstellungen\Volker\Desktop\test.php 
short path: C:\DOKUME~1\Volker\Desktop\test.php

0

如何對空間進行反斜線?

Home/My Documents/ --> Home/My\ Documents/ 
+0

我試圖運行的可執行文件將反斜槓視爲名稱的一部分。在你的例子中,它會嘗試打開文件Home/My \ – 2009-06-16 22:42:01

+0

您可能需要phphil建議的escapeshellarg。如果直接從命令行調用 – 2009-06-16 22:56:18

1

您可能想看看escapeshellarg()並將參數放在雙引號之間。

+0

,我認爲它也可以工作,您可以用反斜槓進行轉義。它在我執行dir命令時起作用,但在執行我試圖運行的命令時不起作用。 – 2009-06-16 23:23:23

相關問題