PHPから実行可能ファイルにパラメーターとしてファイルパスを渡したいのですが、ファイルパスにスペースが含まれている可能性があります。実行可能ファイルはパラメータの前後の引用符を処理していないようです。そのため、長い名前の代わりに短いDOS名を渡すことができるのではないかと思いました。
PHPは古いスタイルのDOS8.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/