2009-06-16 107 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

相关问题