2010-03-10 23 views
3

我正在使用Windows上的PHP CLI編寫一些小型桌面命令行應用程序。Windows上的PHP CLI選項

我想知道是否和如何有可能於:

  • 清除屏幕(CLS將是正常的命令,但執行exec()將不會使用它)
  • 改變顏色,改變輸出部分的顏色(之前在節目看到了這一點)
  • 製作水平更大的命令行 - 事情很快得到不可讀

是上述任何可能從PHP腳本里面?

回答

1

PHP manual page for working with the commandline

直接回答您的每一個要點的:

有該網頁上給出了可以清除功能評論屏幕。我會在這裏爲您報價:

<?php 
    function clearscreen($out = TRUE) { 
    $clearscreen = chr(27)."[H".chr(27)."[2J"; 
    if ($out) print $clearscreen; 
    else return $clearscreen; 
    } 
?> 

還有另一個評論,它解釋瞭如何改變顏色。同樣,我會引用它:

<?php 
echo "\033[31m".$myvar; // red foreground 
echo "\033[41m".$myvar; // red background 
?> 

和重置:

<?php 
echo "\033[0m"; 
?> 

你應該通過頁面的其餘部分閱讀整個負載上如何操作CLI的詳細建議。

你的問題的唯一部分,沒有答案是第三個要點。不幸的是,我不相信你能做到這一點,我不認爲可以水平調整Windows命令行窗口的大小。

希望有所幫助。

0

至於第三個問題,我建議你把默認命令行改爲Console 2。這是一個很好的替代品,不僅可以讓你使用任何你喜歡的寬度(只要它適合你的屏幕),還支持命令歷史記錄,製表符和一些UI糖。

2

在Windows上,在標準CLI提示符下,無法以顏色輸出(如Spudley的答案中所示)。

您可以通過右鍵單擊命令窗口的標題欄並選擇「屬性」,然後在「佈局」選項卡中修改值來更改窗口的大小。我認爲不可能在PHP中修改CLI的寬度。

你可以使用我寫here

0

功能檢查在Windows命令行窗口的寬度所提供的代碼將無法在Windows下工作,因爲PHP在Windows下做一些事情,以命令窗口。我不知道PHP做什麼,但我寫了一個簡單的Freebasic的程序,只有兩行:

cls 
    end 

我然後編譯它和常規的命令行窗口下運行它。它清除了屏幕,沒有任何問題。然後我做在PHP如下:

<?php 
    echo "This is a test\n"; 
    system("cls.exe"); 
    exec("cls.exe"); 
    passthru("cls.exe"); 
?> 

當我跑了它什麼也沒做不僅僅是程序中的「這是一個測試」行。因此,使用PHP進行某種抑制會查找並停止發生的任何類型的轉義序列。在PHP中解決這個問題之前,您將永遠無法執行cls,也不能使用curses,ncurses或任何其他庫。我們需要做的是將諸如FreeBasic的窗口方法這樣的東西作爲某種類(或者只是一組C語言的例程),這些類將通過THAT語言的方法打開一個新窗口,並用它們來創建文本窗口。然後所有的轉義序列都可以工作。在此之前 - 他們不會。

我覺得奇怪的是,PHP最初是用Perl編寫的,Perl會在Windows上做ncurses,沒有任何問題。 Perl也將允許所有的轉義序列工作。所以在Windows編譯中就有一些導致這個問題的事情。