我想将文件路径作为参数传递给 PHP 的可执行文件,并且文件路径可能包含空格。可执行文件似乎不处理参数周围的引号,所以我想也许我可以传递短 DOS 名称而不是长名称。
PHP 是否了解旧式 DOS 8.3 文件名?
php/win32 附带内置的COM/.net 扩展。您可以使用它来创建 WSH FileSystemObject,然后查询File 对象的ShortPath 属性。
<?php
$objFSO = new COM("Scripting.FileSystemObject");
$objFile = $objFSO->GetFile(FILE);
echo "path: ", $objFile->Path, "\nshort path: ", $objFile->ShortPath;
打印例如路径:C:\Dokumente und Einstellungen\Volker\Desktop\test.php 短路径:C:\DOKUME~1\Volker\Desktop\test.php
您可能想查看escapeshellarg()
并将参数放在双引号之间。
您需要 Windows 上 Kernel32 中的GetShortPathName API。要从 PHP 调用它,您需要使用Win32 API 扩展...
反斜杠空间怎么样?
Home/My Documents/ --> Home/My\ Documents/