2017-03-14 6 views
1

私は私のビジネスのための新しいポータルを開発して..私は..別のPC名に多くのバッチファイルを起動する必要がありますので、私は1つのパラメータで、私のバッチを実行しよう...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

start 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' –

関連する問題