Pregunta

Quiero pasar una ruta de archivo como parámetro a un ejecutable de PHP, y la ruta de archivo puede contener espacios. El ejecutable no parece manejar las comillas alrededor del parámetro, así que pensé que tal vez podría pasar el nombre corto de DOS en lugar del nombre largo.

¿PHP sabe algo acerca de los nombres de archivos DOS 8.3 de estilo antiguo?

¿Fue útil?

Solución

php / win32 se envía con la extensión COM / .net incorporada . Puede usarlo para crear un WSH FileSystemObject y luego consulte la propiedad ShortPath del < a href = "http://msdn.microsoft.com/en-us/library/1ft05taf(VS.85).aspx" rel = "nofollow noreferrer"> Objeto de archivo .

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

Otros consejos

Es posible que desee echar un vistazo a escapeshellarg () y colocar el parámetro entre comillas dobles.

Desea que la GetShortPathName en la API Kernel32 en las ventanas. Para llamar a esto desde PHP, deberá usar la extensión de la API de Win32 ...

¿Qué hay de hacer una copia de seguridad del espacio?

Home/My Documents/  --> Home/My\ Documents/
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top