命令行參考


命令行與編程參考文檔

前言

為什么要學命令行?不會命令行的程序猿怎能叫程序猿呢?

命令行超輕量級編程體驗!你值得擁有!

基礎篇

命令行是什么?

按下熱鍵組合【 Win + R 】 調出【運行】窗口:

//至於【Win】鍵就是【開始】鍵,按下以后能調出【開始菜單】

輸入cmd,然后確定(or 回車)

這樣cmd(命令提示符)程序就被打開了,看標題:

管理員:C:\Windows\system32\cmd.exe

這是指【以管理員權限使用程序】,

后面的【C:\Windows\system32\cmd.exe】則是指cmd.exe的路徑(位置)

一開始會顯示:

Microsoft Windows [版本 6.1.7601]

版權所有 (c) 2009 Microsoft Corporation。保留所有權利。

這是cmd運行初始顯示的內容,相當於cmd自身的屬性。類似【關於】。

    包括版本號等等,然而也有一些計算機上的cmd是英文版的,這種語言不在我們的討論范圍之內。

接下來:

C:\Users\zccz>

這是回聲echo,默認輸出當前路徑。//即當前cmd在何處運行。

//所謂"回聲"的概念,來源於"保留",比如說喊了一句"你個傻X"之后再喊//一句"去shi吧!"之后會有回聲"你個傻X去shi吧"這樣。大致感覺一下就//好,這並不重要。

命令行基本操作

    命令行中【命令】種類繁多,但也有一些基本的語法:

如果我們隨意輸入一個命令,它通常不是系統已經定義好的命令,於是就會顯示這個:[Command] 不是內部或外部命令,也不是可運行的程序或批處理文件。

那么問題就來了:

    什么是內部命令外部命令可運行的程序以及批處理文件

通常將內部命令理解為cmd預定義的命令:如cd、dir等

通常將外部命令理解為由外部導入的拓展命令工具集合(暫時不提這個)。

可運行的程序:這涉及到一個非常基本的語法:

輸入命令a,會運行這個目錄(C:\Users\zccz\)下的a.exe文件,如圖

//這個a.exe是我以前編寫的一個簡單C程序,輸出"Hey!\n"。

//這樣你就可以知道,如果要運行程序,應當輸入什么命令了。

命令格式:

    [drive:][path][filename(.exe)]

//這個.exe的后綴名可加可不加,在同一目錄下,同名的文件優先運行exe文件:

//如同一目錄下有a.exe與a.bat兩種文件,輸入命令a,cmd會運行a.exe而不是a.bat

這個后綴名為bat的文件就是第4個可以直接運行的東西——批處理文件

    關於這個,就是差不多一次性按順序執行一堆命令的意思,批處理的語法我們在后面介紹。現在先跳過。

命令行基本命令

關於命令行,我們最常用的命令如下:

    dir        顯示目錄中的文件和子目錄列表。

解釋一下:前兩列是【最后修改時間】,第三列是【文件性質】(DIR表示是一個目錄,也稱文件夾,如果沒有DIR標識則是一個文件),第四列是【文件大小】(文件夾不顯示大小),第五列是【文件名】

//DIR是我們通過cmd觀察計算機文件結構的一種方法,是我們的"眼"。

//DIR——Direction

    cd        顯示當前目錄名或改變當前目錄。

//CD——Change Direction

//CD是我們通過cmd訪問計算機文件目錄的方法,是我們的"腿"。

命令用法:        cd [direction]

通常配合DIR使用("走路要看路",然而當你閉着眼睛也能走的時候你就可以脫離DIR了)

就這樣先看一下這個目錄下有什么(比如說有一個DIR叫Desktop),然后再用cd命令移動到這個目錄下(cd Desktop),然后還可以再用一次DIR查看Desktop目錄下的文件:

然而我的Desktop非常的干凈,沒有任何的文件。

//實際上,從名字上也可以看出,這個Desktop文件夾里的內容就是桌面上的內容。

那么這個目錄【.】與【..】是什么鬼?

【.】    當前目錄

【..】    上級目錄(父目錄)

如使用命令:    cd ..    則會返回上一級目錄

                cd ..\..    則會返回上上級目錄

    start        啟動一個單獨的窗口運行指定的程序或命令。

        首先介紹一種用法來承接上面提到的內容。

        命令    start .        用資源管理器打開當前目錄

//    "."是一個對象,是指向當前目錄的,默認用"資源管理器"打開,

//    其他對象也是可以的,你甚至可以start cmd來打開另一個cmd窗口。

start真是功能強大,它可以用默認程序打開文件,如start a.txt,那么它會調用【記事本】(或者其他默認程序)來打開a.txt。

你可能會發現,直接輸入a.txt也能打開a.txt,那么加上start的區別在哪呢?start會調用另一線程去處理這個新的任務(然而這點你通常是察覺不到的,只有在多開的情況,如批處理時能體會到)。另外如果你想打開一個未定義默認程序的文件:如圖中的TEST文件,系統並不知道用什么打開它。。

輸入TEST的情況:

輸入 start TEST的情況,會試圖打開文件。

從這點上看,用start更貼近我們平時使用的【打開文件】。

    cls        清除屏幕。

        //cls——CLear Screen

        //如題,如果覺得屏幕太亂了,就用cls清除一下吧。

然而命令行遠遠不止這點功能,然而一個個講又過於費事,而且暫時也沒有什么卵用。先談談如何自學命令行吧。

如何自學命令行?

cmd有較為完整的參考文檔,輸入命令help,你將看到一大堆命令及他們的簡介。在最后"有關工具的詳細信息,請參閱聯機幫助中的命令行參考。"說明命令行的參考文檔不止這么一點。

如果對某個命令想更深入地了解用法的話:

    輸入 help [Command]或[Command] /?    即可查看該命令的用法了。

如dir:可以輸入help dir 或者 dir /?    查看dir的用法。

首先第一句會給出語法:

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]

[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

解釋:

  1. 帶[]的是"可選參數",可填可不填,不填則會采用默認設置。
  2. drive: 是驅動器號,如C盤(C:),D盤(D:)
  3. path是路徑,如Users\zccz
  4. filename是文件名,也可以是文件夾的名字……
  5. 其他[/A],[/B]…[/4]都是相對應的拓展開關,能夠更清楚地命令系統。

這樣去學習一些命令就非常輕松啦!在【進階篇】的【命令集】中我會介紹各種命令的基本用途,各位可以挑有興趣的自己研究啦,另外也不要忘記自行百度。

如何使用命令行編譯運行我的程序?

終於到了重點,如何用命令行來編譯運行我的程序?這些都是在熟悉cmd基本命令以后才能熟練使用的,所以前面有較長的鋪墊。

以Windows用戶的C/C++為例,我們談談怎么在命令行中編譯/運行 程序

  1. 准備C/C++編譯器一只,基本上用MinGW(Mini Gcc for Windows),這是Windows用戶的C/C++編譯器的名字,而什么C-Free、Dev-C++等則是IDE(集成開發環境),Visual Studio表面是個IDE,但它也自行開發了編譯器。

如何獲取編譯器?

方法一:若你曾經安裝過IDE,如C-Free、Dev-C++等,你可以在它的安裝目錄找到MinGW,將整個MinGW拷貝出來,放到一個獨立的地方,要注意,一個完整的MinGW至少應該包括bin、include等目錄,檢查bin文件夾中是否有gcc.exe、g++.exe。

方法二:在Internet上獲取編譯器,下載MinGW,選擇安裝版的或者免安裝版的都是可以的。

百度雲分享:

MinGW4.9.1     http://pan.baidu.com/s/1ntKIWeX     150.53MB

MinGW3.4.5    http://pan.baidu.com/s/1hqEh6CG     19.78MB

C-Free            http://pan.baidu.com/s/1c0Gr6t6    13.97MB

(MinGW3.4.5是我從C-Free中拷出來的,不知道是什么黑科技壓縮)

這里給出兩個版本的MinGW,可以的話盡量下載新的,雖然舊的也湊合着能用,如果網速實在太渣就用3.4.5的吧。

 

  1. 設置環境變量PATH,將編譯器文件夾放在某一個目錄。

    如C:\Users\zccz\code\

    找到bin目錄的路徑,(通常是mingw\bin)

    復制bin目錄的完整路徑:C:\Users\zccz\code\mingw\bin

    【運行】SystemPropertiesComputerName(更改系統設置)

    【高級】→【環境變量…】

    在系統變量中找到【Path】→【編輯】

    在Path的最后加上一句C:\Users\zccz\code\mingw\bin;即可

    要注意已有Path變量最后不一定有";"結尾!如果最后沒有分號,要先補上分號!

    【確定】→【確定】→【確定】,完成環境變量的配置

  2. 運行cmd,輸入命令g++

如果輸入g++顯示"'g++' 不是內部或外部命令,也不是可運行的程序或批處理文件。"則說明環境變量配置錯誤,需要返回上一步重新配置。

如果顯示"no input files"則說明你成功了,可以進行編譯了。

  1. 編譯&運行:

    用cd命令進入存放源代碼的目錄(后稱【代碼目錄】,因此我建議將源代碼存放在與初始目錄相近的位置,這樣方便進入代碼目錄),然后輸入命令:

    g++ [filename]

    如我在code目錄下有一個名為20.cpp的C++源碼文件,則我命令:

    g++ 20.cpp        之后g++編譯器開始編譯,編譯時標題尾部會出現

    -g++ 20.cpp    的字樣,說明g++程序已加載,運行中,此時還會鎖定鍵盤輸入(然而使用start g++ 20.cpp則不會鎖死鍵盤,而是並行處理)。

    待編譯完畢后,下一行回聲echo出現,同時釋放鍵盤輸入。

    此時目錄中會多出一個a.exe,這個就是編譯(包括連接)的結果,可以輸入命令a來運行這個a.exe(即運行你所編的程序)

  2. 代碼編輯工具

    那么用什么編輯cpp文件呢?

    用系統自帶的記事本【notepad】可以勉強進行代碼編輯,然而縮進也好,加亮也好,notepad本身在被制作的時候就沒有這樣的需要。因此它不適合用於編寫代碼。

    這里我們推薦【notepad++】,這是一款為程序猿定制的notepad,簡潔大方,沒有繁復的啟動預算,打開便捷……誰用誰知道。關於notepad++的下載地址,百度【notepad++】第一條就可以。

  3. 配置notepad++

    剛剛安裝好的notepad++被程序猿們普遍認為不是很好看(我個人也是這么想的),所以需要配置一番。

    【設置】→【語言格式設置…】

    如果說簡單地配置的話我個人使用這樣一個配色方案:

    然而你們可以自己研究一下配色,不過字體一般都使用Courier New這種等寬字體,這樣便於代碼對齊,比較好看。字體大小隨意了,在代碼編輯的時候可以使用【Ctrl+鼠標滾輪】來調節大小。

    完成以后,保存並關閉,接下來配置【首選項】

    首選項里面有很多神奇的設置你們可以嘗試一下,不過先讓我們看一下這幾個方面的配置:

    1. 新建,默認語言C++
    2. 默認目錄:默認路徑改為你自己的代碼目錄。
  4. 完畢,現在你可以在notepad++上編輯自己的代碼然后使用g++編譯它了,Enjoy it!

Hello World樣例示范

打開notepad++,輸入代碼如下:

#include <iostream>

using namespace std;

 

int main(){

    cout<<"Hello World!"<<endl;

    return 0;

}

 

保存為cpp文件,注意不要錯誤地保存為h文件

如果保存為1.cpp,在代碼目錄里就有一個1.cpp文件了

這個圖標也會變成藍色,說明文件已保存。(若是紅色說明未保存)

然后運行cmd,進入代碼目錄,輸入g++ 1.cpp,待編譯完畢,輸入a即可運行。

進階篇

編譯開關

首先說明一下編譯開關是什么概念:

    編譯本身有很多的選項,比如你想怎么編譯,可以告訴編譯器具體的編譯模式。比如說,我想生成myprogram.exe而不是a.exe(a.exe是g++默認生成的可執行文件名)。編譯開關的設定可以造出很多很有趣的現象。

這里給出一篇博文,以供各位參考,講得挺好的。

http://blog.csdn.net/woshinia/article/details/11060797

g++有許多編譯開關挺常用的,如-o,-O2等等,下面來演示一番。

-o:自定義輸出開關

    g++ -o [filename] [cppfile]

將cppfile編譯生成程序,名為filename

如g++ -o hehe.exe 27.cpp

這樣,在這個目錄下就會產生一個hehe.exe,輸入命令hehe即可運行程序。

這個命令主要起到了重命名的作用,其他方面倒也沒有什么卵用。

-O2:編譯優化開關

    g++ [cppfile] [-O2]

將cppfile以O2優化編譯,編譯器會用黑科技優化代碼,提升代碼運行效率。

如g++ 27.cpp –O2

這樣經過優化的程序運行起來會更快,至於具體快多少就要看實際情況了,不過經過用戶體驗,似乎是快了幾倍的樣子……(不得了不得了)。

重定向與管道

這個主要是程序的輸入輸出問題。

如何從文件中讀取數據?如何將輸出寫入文件?

其中方法之一就是在c++源碼中使用文件讀寫相關的函數。

然而一旦確定,改動讀寫方式就需要修改代碼重新編譯,略有不便。

在這里,使用Windows命令行的重定向與管道的相關功能,我們可以在不修改代碼的情況下自由選擇文件輸入輸出或者鍵盤輸入輸出。

重定向:

重定向的命令語法更像是一個運算符。

主要使用這三種符號:"<"、">"、">>"。

輸入符    "<"

a.exe < inputfile

將inputfile中的內容輸入到a.exe中,運行a.exe。即將inputfile作為a.exe的輸入文件。

這樣做有什么優點呢?

  1. 在處理大量輸入的時候無須手打,debug的時候無須一次次復制,直接將輸入保存在文件中,然后將文件輸入即可。
  2. 輸入輸出的內容不會混在一起。

    這里舉個例子說明一下。

    這里有一個已經編寫好的程序a.exe

    以及一個輸入:

    6 8 5 3 5 2 6 4

    5 6 0 0

     

    8 1 7 3 6 2 8 9 7 5

    7 4 7 8 7 6 0 0

     

    3 8 6 8 6 4

    5 3 5 6 5 2 0 0

     

    0 0

     

    -1 -1

    不使用文件的情況:一邊輸入一邊輸出,輸入&輸出會混在一起。

然而我嫌輸入過多,打起來麻煩,於是我把輸入存放在一個文件中(a.in)

然后鍵入命令:a<a.in(這其實是a.exe < a.in的縮寫)

這樣就只產生了輸出,界面非常簡潔。

輸出符 ">"

    重定向到文件開頭輸出。

    效果是覆寫文件,無視文件之前的內容,意思就是輸出文件的原有內容會消失。

    如果目標輸出文件不存在,將會創建之(然而輸入文件不存在並不會創建)。

a.exe > outputfile

    將a.exe輸出到outputfile中

如現有一個Hello World的程序a.exe

那么鍵入命令

a.exe > my.out

這樣,屏幕上不會顯示Hello World!,然而我們可以看到目錄中有一個my.out文件,這個后綴名並沒有默認程序能打開(然而你也可以自行設置默認程序),但它本質是一個文本文件,那么可以使用type命令來在屏幕上輸出my.out的內容:

type my.out

輸出符    ">>"

將輸出重定向到文件末尾。

與">"的區別是,這樣輸出,不會覆蓋原文件的內容,而是在文件末尾輸出新的內容。其他方面與">"一致。

復雜的重定向混搭向

如果一個程序既要輸入又要輸出,或者一個程序的輸入由另外一個程序的輸出給出……如何解決呢?

首先,命令是一個句子。這個句子只能有一個主體,其他都是附屬的。即命令的開始應該代表這個命令的主體,通常也是這句命令的最后執行的程序。還是舉個例子。

    問題:將a.in文件中的內容輸入到a.exe中,運行結果輸出到a.out中。

    命令:a.exe < a.in > a.out

    問題:將b.exe的運行結果輸入到a.exe中,運行結果顯示在屏幕上。

    命令:a.exe < b.exe

    問題:將b.exe的運行結果輸入到a.exe中,運行結果輸出到a.out。

    命令:a.exe < b.exe >a.out

    問題:將b.in輸入到b.exe,並將結果輸出到a.exe,再將a.exe的運行結果輸出到a.out(注意下面<、>的匹配,會優先匹配外層<>而不是內層,如果搞不清楚可以加括號來注明,不過也要注意括號與文件名之間要留空格)

    命令1:a.exe < b.exe < b.in > a.out

    命令2:a.exe < ( b.exe < b.in ) > a.out這個命令2也體現了<>的匹配關系。

    錯誤命令:a.exe <(b.exe <b.in)> a.out這是因為系統找不到 "(b.exe"與"b.in)"文件。

    然而有趣的一點是:即便你加了括號,cmd也似乎視而不見,我行我素。

所以,括號還是不要加了,命令2僅供理解<>匹配。

命令集

ASSOC 顯示或修改文件擴展名關聯。

//用於更改某文件的默認程序,如.mp3的文件用哪一個播放器打開可以用這個命//令設置

ATTRIB 顯示或更改文件屬性。

    //利用這個命令可以實現隱藏/顯示文件等功能。

BREAK 設置或清除擴展式 CTRL+C 檢查。

//這個命令在Windows系統里沒有什么卵用。

BCDEDIT 設置啟動數據庫中的屬性以控制啟動加載。

    //這個命令用於控制系統啟動器boot,慎用。

CACLS 顯示或修改文件的訪問控制列表(ACL)。

    //這個命令用於控制對(文件/文件夾)的讀、寫等權限。

CALL 從另一個批處理程序調用這一個。

    //批處理相關,日后再提

CD 顯示當前目錄的名稱或將其更改。

    //這個命令用於更改當前目錄,起到【移動】的效果。

CHCP 顯示或設置活動代碼頁數。

    //如題,不明白活動代碼頁數請跳過

CHDIR 顯示當前目錄的名稱或將其更改。

    //如題,能更改當前目錄的名稱(改名),與cd不同,cd不改變目錄名,

//而chdir能改

CHKDSK 檢查磁盤並顯示狀態報告。

    //有時候U盤插入后提示要修復就是這個命令的一個拓展了

CHKNTFS 顯示或修改啟動時間磁盤檢查。

    //有計划地進行磁盤掃描

CLS 清除屏幕。

CMD 打開另一個 Windows 命令解釋程序窗口。

//cmd之間會產生堆棧現象

//大家來找茬……

然而真正的打開另一個 Windows 命令解釋程序窗口的寫法是:

        start cmd

COLOR 設置默認控制台前景和背景顏色。

    //如果你厭倦了黑底白字,你可以研究一下這個命令。

COMP 比較兩個或兩套文件的內容。

COMPACT 顯示或更改 NTFS 分區上文件的壓縮。

CONVERT 將 FAT 卷轉換成 NTFS。您不能轉換

當前驅動器。

COPY 將至少一個文件復制到另一個位置。

DATE 顯示或設置日期。

DEL 刪除至少一個文件。

DIR 顯示一個目錄中的文件和子目錄。

DISKCOMP 比較兩個軟盤的內容。

DISKCOPY 將一個軟盤的內容復制到另一個軟盤。

DISKPART 顯示或配置磁盤分區屬性。

DOSKEY 編輯命令行、調用 Windows 命令並創建宏。

DRIVERQUERY 顯示當前設備驅動程序狀態和屬性。

ECHO 顯示消息,或將命令回顯打開或關上。

ENDLOCAL 結束批文件中環境更改的本地化。

ERASE 刪除一個或多個文件。

EXIT 退出 CMD.EXE 程序(命令解釋程序)。

FC 比較兩個文件或兩個文件集並顯示它們之間的不同。

FIND 在一個或多個文件中搜索一個文本字符串。

FINDSTR 在多個文件中搜索字符串。

FOR 為一套文件中的每個文件運行一個指定的命令。

FORMAT 格式化磁盤,以便跟 Windows 使用。

FSUTIL 顯示或配置文件系統的屬性。

FTYPE 顯示或修改用在文件擴展名關聯的文件類型。

GOTO 將 Windows 命令解釋程序指向批處理程序

中某個帶標簽的行。

GPRESULT 顯示機器或用戶的組策略信息。

GRAFTABL 啟用 Windows 在圖形模式顯示擴展字符集。

HELP 提供 Windows 命令的幫助信息。

ICACLS 顯示、修改、備份或還原文件和

目錄的 ACL。

IF 在批處理程序中執行有條件的處理過程。

LABEL 創建、更改或刪除磁盤的卷標。

MD 創建一個目錄。

MKDIR 創建一個目錄。

MKLINK 創建符號鏈接和硬鏈接

MODE 配置系統設備。

MORE 逐屏顯示輸出。

MOVE 將一個或多個文件從一個目錄移動到另一個目錄。

OPENFILES 顯示遠程用戶為了文件共享而打開的文件。

PATH 為可執行文件顯示或設置搜索路徑。

PAUSE 停止批處理文件的處理並顯示信息。

POPD 還原由 PUSHD 保存的當前目錄上一次的值。

PRINT 打印一個文本文件。

PROMPT 改變 Windows 命令提示。

PUSHD 保存當前目錄,然后對其進行更改。

RD 刪除目錄。

RECOVER 從損壞的磁盤中恢復可讀取的信息。

REM 記錄批處理文件或 CONFIG.SYS 中的注釋。

REN 重新命名文件。

RENAME 重新命名文件。

REPLACE 替換文件。

RMDIR 刪除目錄。

ROBOCOPY 復制文件和目錄樹的高級實用程序

SET 顯示、設置或刪除 Windows 環境變量。

SETLOCAL 開始用批文件改變環境的本地化。

SC 顯示或配置服務(后台處理)。

SCHTASKS 安排命令和程序在一部計算機上按計划運行。

SHIFT 調整批處理文件中可替換參數的位置。

SHUTDOWN 讓機器在本地或遠程正確關閉。

SORT 將輸入排序。

START 打開單獨視窗運行指定程序或命令。

SUBST 將驅動器號與路徑關聯。

SYSTEMINFO 顯示機器的具體的屬性和配置。

TASKLIST 顯示包括服務的所有當前運行的任務。

TASKKILL 終止正在運行的進程或應用程序。

TIME 顯示或設置系統時間。

TITLE 設置 CMD.EXE 會話的窗口標題。

TREE 以圖形顯示啟動器或路徑的目錄結構。

TYPE 顯示文本文件的內容。

VER 顯示 Windows 的版本。

VERIFY 告訴 Windows 驗證文件是否正確寫入磁盤。

VOL 顯示磁盤卷標和序列號。

XCOPY 復制文件和目錄樹。

WMIC 在交互命令外殼里顯示 WMI 信息。

 

批處理基礎


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM