2012-02-15 81 views
1

例如,我想在控制檯中更改PC時間。php exec使用控制檯和輸入

C:\Users\user>time 
The current time is: 15:25:21,04 
Enter the new time: 

PHP:

exec('time', $out, $ret); 
/* 
$out = 
The current time is: 15:25:21,04 
Enter the new time: 
*/ 

如何發送新的時間?

UPD

無1行命令echo <timestring> | time

#Thx to reox 
#Working example: 
$next_hour = date('H:i:s', strtotime('+1 hour')); 
$command = 'time'; 
$handle = popen($command, 'r'); 
echo 'Command responce: <br>'; 
while($line = fgets($handle)) { 
    echo $line; 
    echo '<br>'; 
} 
pclose($handle); 
$handle = popen($command, 'w'); 
fputs($handle, $next_hour); 
pclose($handle); 

回答

1

time控制檯應用程序在標準輸入(STDIN)期望輸入,這對控制檯應用程序的標準輸入(因此,這是用於任何其他標準真命令行(CLI)應用程序以及,不僅時間):

exec('echo <timestring> | time', $out, $ret); 

應該做的伎倆,管道符號|將輸入echo作爲輸入重定向到time。這是windows和unix共同的原則。

+0

這是否在Windows工作? (「c:\ Users」部分暗示操作系統) – Nanne 2012-02-15 13:33:52

+0

@reox請參閱更新 – cetver 2012-02-15 13:34:20

+0

@cetver mhh afaik是否不支持標準輸入?我很久以前和SSH有同樣的問題......你不能只是輸入密碼...我認爲它同樣的問題 – reox 2012-02-15 13:36:08