2017-03-14 2 views
1

은 .. 나는 .. 다른 PC의 이름을 많은 배치 파일을 시작해야합니다 그래서 하나 개의 매개 변수 내 배치를 실행하려고 ..PHP - 매개 변수가있는 배치 파일을 실행하는 방법? 내가 실행하면 내 비즈니스를위한 새로운 포털을 개발하고 있어요

$path = $db->givePath($service); 
     $path = $path . " " . "PCNAME"; 
     if(exec("cmd /c" . $path)){ 
       echo "Successful sent"; 
     } else { 
      echo "Error"; 
     } 

을하지만,

$path = $db->givePath($service); 
     if(exec("cmd /c" . $path)){ 
       echo "Successful sent"; 
     } else { 
      echo "Error"; 
     } 

누군가가 나를 여기에 도움이 명령은 아무것도 이전 버전 일 .. 어떻게하지? 이 이스케이프 할 필요가 문자를 가지고 있기 때문에 인수로 PCNAME을 통과 할 때 당신은 가능성이 문제가 발생하는

system("cmd /c C:" . $path_to_file); 
+0

반환되는 경로의 예를 들려 줄 수 있습니까? – TheDude

+0

services \ batch.bat –

답변

0

: 당신이 할 수있는

+0

그리고 매개 변수는 어떻게 사용할 수 있습니까? 여기처럼 : start "" "P : \ ath to \ batch.bat"-parameter –

+0

배치 스크립트에 매개 변수를 제공하려고하거나 어떤 종류의 명령 행 옵션을 사용하려고합니까? 명령 줄에 직접 무언가를 입력하는 경우 입력 할 내용은 무엇입니까? – TheDude

+0

시작 file.bat pcname –

0

는 cmd를 쉘을 사용합니다. escapeshellarg에 대한 자세한 내용은 TL을 참조하십시오. DR은 실행이 예기치 않게 종료되는 제어 문자를 이스케이프 처리합니다. escapshellarg()을 사용하여 PCNAME withouth에 UNC 경로와 같은 것을 사용하면 다른 인수가 지정되었다고 생각하여 창을 속이게됩니다.

$path = $db->givePath($service); 
$batchCmd = "C:\{$path} " . escapeshellarg('PCNAME'); 
if(exec("cmd /c {$batchCmd}")) { 
    echo 'Successfully sent'; 
} else { 
    echo 'Error'; 
} 
+0

내 데이터베이스가 올바른 경로를 반환합니다. 매개 변수없이 명령을 실행하려고하면 작동합니다 .. –

+0

예를 들어 사용자 이름과 함께 파일을 사용할 수 있습니다 :'C : \ Users \ Tony \ path \ to \ file.bat' –

관련 문제