Могу ли я получить краткое DOS-имя файла из PHP? - PullRequest
3 голосов
/ 17 июня 2009

Я хочу передать путь к файлу в качестве параметра к исполняемому файлу из PHP, и путь к файлу может содержать пробелы. Исполняемый файл, похоже, не обрабатывает кавычки вокруг параметра, поэтому я подумал, что, возможно, я мог бы передать короткое имя DOS вместо длинного имени.

Знает ли PHP что-нибудь об именах файлов DOS 8.3 старого стиля?

Ответы [ 4 ]

4 голосов
/ 17 июня 2009

php / win32 поставляется со встроенным расширением COM / .net . Вы можете использовать его для создания WSH FileSystemObject и затем запросить свойство ShortPath объекта File .

<?php
$objFSO = new COM("Scripting.FileSystemObject");
$objFile = $objFSO->GetFile(<strong>FILE</strong>);
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
1 голос
/ 17 июня 2009

Возможно, вы захотите взглянуть на escapeshellarg() и поставить параметр между двойными кавычками.

1 голос
/ 17 июня 2009

Требуется API GetShortPathName в Kernel32 для Windows. Чтобы вызвать это из PHP, вам нужно использовать расширение Win32 API ...

0 голосов
/ 17 июня 2009

Как насчет обратной косой черты?

Home/My Documents/  --> Home/My\ Documents/
...