2015-09-15 74 views
1

我有下面的代碼片段,我試圖修改,以在PHP中創建一個計劃任務在窗口中。我嘗試了exec,然後pclose(popen($ cmd))沒有成功。 PHP腳本執行但沒有命令被調用,我看不到我的任務計劃程序gui中添加了計劃任務。PHP/Windows任務計劃程序 - 如何從PHP創建新的任務?

問題

我怎樣才能調用SchTasks.exe會從PHP創建一個新的任務?

代碼段

$daysList = join(", ", $days); 


    $cmd = "c:\\windows\\system32\\schtasks.exe /CREATE /SC WEEKLY /D \"$daysList\" /TN \"Action Item Reminder\" /TR \"php.exe C:\\wamp\\www\\aim\\module\\Application\\src\\Application\\Controller\\sendmail.php\" /ST 00:01 /f"; 

    pclose(popen("start /B ". $cmd, "r")); 


    //echo "c:\\windows\\system32\\schtasks.exe /CREATE /SC WEEKLY /D \"$daysList\" /TN \"Action Item Reminder\" /TR \"C:\\wamp\\bin\\php\\php5.5.12\\php.exe C:\\wamp\\www\\aim\\module\\Application\\src\\Application\\Controller\\sendmail.php\" /ST 00:01 /f"; 

    //echo '/CREATE /SC WEEKLY /D "'. $daysList .'" /TN "Action Item Reminder" /TR "C:\wamp\www\aim\module\Application\src\Application\Controller\sendmail.php" /ST 00:01 /f"'; die(); 

    if (isset ($activate)) 
    { 
     $emailOptionTable->update('true', 'Activate Reminders'); 
     $cmd = "c:\\windows\\system32\\schtasks.exe /Change /TN \"Action Item Reminder\" /Enable"; 

     pclose(popen("start /B ". $cmd, "r")); 
    } 
    else 
    { 
     $emailOptionTable->update('false', 'Activate Reminders'); 
     $cmd = "c:\\windows\\system32\\schtasks.exe /Change /TN \"Action Item Reminder\" /Disable"; 

     pclose(popen("start /B ". $cmd, "r")); 
    } 

EDIT

本地化問題

Apache的錯誤日誌顯示此信息

ERROR: No mapping between account names and security IDs was done.

(46,4):UserId:ERROR: No mapping between account names and security IDs was done.

(46,4):UserId:

012的

我需要做些什麼來解決這個問題?

回答

3
  1. 您需要有一個用戶。所以你應該添加/RU「用戶名」
    我建議運行任務爲系統

  2. 您無需填寫完整地址。
    「C:\ WINDOWS \ SYSTEM32 \ SchTasks.exe會」 >> SCHTASKS.EXE

  3. 你可以在命令行中反饋窗戶使用 「>您file.txt的」 在行尾。
    EXP:DIR> 「C:\ Directories.txt」

你的鱈魚:

$daysList = join(", ", $days); 

    $cmd = "schtasks.exe /CREATE /SC WEEKLY /D \"$daysList\" /TN \"Action Item Reminder\" /TR \"php.exe C:\\wamp\\www\\aim\\module\\Application\\src\\Application\\Controller\\sendmail.php\" /ST 00:01 /f /RU System"; 

    pclose(popen("start /B ". $cmd, "r")); // OR exec($cmd); 

    //echo "schtasks.exe /CREATE /SC WEEKLY /D \"$daysList\" /TN \"Action Item Reminder\" /TR \"C:\\wamp\\bin\\php\\php5.5.12\\php.exe C:\\wamp\\www\\aim\\module\\Application\\src\\Application\\Controller\\sendmail.php\" /ST 00:01 /f /RU System"; 
    //echo '/CREATE /SC WEEKLY /D "'. $daysList .'" /TN "Action Item Reminder" /TR "C:\wamp\www\aim\module\Application\src\Application\Controller\sendmail.php" /ST 00:01 /f /RU System"'; die(); 

    $cmd ="schtasks.exe /Change /TN \"Action Item Reminder\" /RU System"; 
    if (isset ($activate)) 
    { 
     $emailOptionTable->update('true', 'Activate Reminders'); 
     pclose(popen("start /B ". $cmd." /Enable", "r")); // OR exec($cmd); 
    } 
    else 
    { 
     $emailOptionTable->update('false', 'Activate Reminders'); 
     pclose(popen("start /B ". $cmd." /Disable", "r")); // OR exec($cmd); 
    } 

好運。

+0

謝謝你的回覆! – Vahe