2010-05-04 1 views
0

Я пытался использовать wscript.shell через COM-объекты с php для передачи некоторых команд cmd в библиотеку cURL (версия DOS). вот что я использую, чтобы выполнить эту задачу:wscript.shell работает с пространством в пути с PHP

function windExec($cmd,$mode=''){ 
    // Setup the command to run from "run" 
    $cmdline = "cmd /C $cmd"; 

    // set-up the output and mode 
    if ($mode=='FG'){ 
     $outputfile = uniqid(time()) . ".txt"; 
     $cmdline .= " > $outputfile"; 
     $m = true; 
    } 
    else $m = false; 

    // Make a new instance of the COM object 
    $WshShell = new COM("WScript.Shell"); 

    // Make the command window but dont show it. 
    $oExec = $WshShell->Run($cmdline, 0, $m); 

    if ($outputfile){ 
     // Read the tmp file. 
     $retStr = file_get_contents($outputfile); 
     // Delete the temp_file. 
     unlink($outputfile); 
    } 
    else $retStr = ""; 

    return $retStr; 
} 

теперь, когда я запустить эту функцию, как:

windExec("\"C:/Documents and Settings/ermac/Desktop/my project/curl\" http://www.google.com/", 'FG'); 

завиток не работает, потому что существует проблема с пути. но когда я удаляю пробелы с пути, он отлично работает.

windExec("\"C:/curl\" http://www.google.com/", 'FG'); 

так что мой вопрос в том, как я могу избежать этих пробелов в командах wscript.shell? все равно я могу это исправить?

заранее спасибо :)

ответ

0

NVM Я нашел решение: там:

windExec("cd C:/Documents and Settings/ermac/Desktop/my project/libs & curl.exe -L http://www.google.com/", 'FG'); 
Смежные вопросы