PHP에서 .bat 파일을 어떻게 실행합니까?
-
08-07-2019 - |
문제
누구든지 PHP 스크립트에서 .bat 파일을 실행하는 방법을 말해 줄 수 있나요?
나는 시도했다:
exec("C:\[path to file]");
system("C:\[path to file]");
아무것도 작동하지 않습니다.PHP 매뉴얼을 확인하고 검색했지만 좋은 답변을 찾을 수 없습니다.내가 어디로 잘못 가고 있는지 아는 사람이 있습니까?
저는 Windows 2003 Server를 실행 중이고 .bat 파일을 수동으로 성공적으로 실행했으며 필요한 작업을 수행했습니다.프로그래밍 방식으로 시작할 수 있으면 됩니다.
해결책
당신은 그것을 통해 그것을 실행해야 할 수도 있습니다 cmd
, EG :
system("cmd /c C:[path to file]");
다른 팁
<?php
exec('c:\WINDOWS\system32\cmd.exe /c START C:\Program Files\VideoLAN\VLC\vlc.bat');
?>
당신이 사용할 때 exec()
기능, 마치 마치 마치 cmd
터미널이 열리고 직접 명령을 입력하고 있습니다.
이와 같은 단일 따옴표를 사용하십시오 $str = exec('start /B Path\to\batch.bat');
그만큼 /B
박쥐가 백그라운드에서 실행되므로 나머지는 PHP 반대로 해당 라인을 실행 한 후에도 계속됩니다. $str = exec('start /B /C command', $result);
어디 command
그런 다음 실행됩니다 result
나중에 사용하기 위해 저장됩니다.
추신: Windows와 Linux 모두에서 작동합니다.
자세한 내용은 여기에 있습니다 http://www.php.net/manual/en/function.exec.php :)
<?php
pclose(popen("start /B test.bat", "r")); die();
?>
내 Windows Machine 8 Machine을 실행하는 IIS 8에서는 배트 이름을 넣고 경로를 잊어 버리기 만하면 배치 파일을 실행할 수 있습니다. 또는 박쥐를 c : windows system32에 넣으면 그것이 어떻게 작동하는지 묻지 말고 그렇게합니다. ㅋㅋㅋ
$ test = shell_exec ( "c : windows system32 cmd.exe /c $ streamnumx.bat");
이 스니펫은 작업 코드에서 가져온 것입니다.
Windows GUI 또는 작업 스케줄러뿐만 아니라 필요할 때 PHP 스크립트에서 직접 bat 파일을 실행할 수 있습니다.그러나 대부분의 경우 30~60초 동안 실행됩니다.PHP 구성에 따라 다릅니다.BAT 파일의 작업이 길고 PHP 스크립트를 정지하지 않으려면 다음을 사용하여 BAT 작업을 다른 프로세스로 포크해야 합니다. php.exe
Apache로부터 신뢰할 수 없습니다.
이것은 실행됩니다 배경 Windows의 모드는 별도의 프로세스로 표시됩니다. cmd.exe
그리고 php.exe
작업 관리자에서 Apache PHP 스크립트를 중단하지 않습니다.스크립트에 의해 생성된 메시지는 로그 파일을 통해 저장되고 다시 검색될 수 있습니다.
내 경우에는 file_scanner.php
나는 PHP 기능으로 몇 시간 동안 지속될 수 있는 큰 파일 배열에 대해 루프에서 몇 가지 무거운 계산을 수행합니다. sleep()
CPU에 과부하가 걸리지 않도록
파일의 성공 포인터 결과 $r
성공 또는 잘못된 시작을 알고 싶다면 ajax를 통해 쿼리할 수 있습니다.나의 경우에는 file_scanner.php
메시지와 함께 로그 파일을 작성합니다. somefile.jpg - OK
몇 초마다 AJAX를 사용하여 UI에 로드하여 진행 상황을 표시할 수 있습니다.
PHP
/**
* Runs bat file in background mode
*
*/
function run_scanner() {
$c='start /b D:\Web\example.com\tasks\file_scanner.bat';
$r=pclose(popen($c, 'r'));
return json_encode(array('result'=>$r));
}
박쥐
@echo Off
D:\PHP\php.exe D:\Web\example.com\tasks\file_scanner.php > D:\Web\example.com\tasks\file_scanner.log
exit