2015-09-15 73 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