Dos命令行

作者:趙老師     http://my.csdn.net/zhao4zhong1
#include <stdio.h>
void main(int argc,char *argv[]) {
    int i;
    for (i=0;i<argc;i++) {
        printf("argv[%d]=[%s]\n",i,argv<em>);
    }
}
//C:\>arg 1 2 3
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2]
//argv[3]=[3]
//
//C:\>arg 1 "2 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 3]
//
//C:\>arg 1 "2 ""3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 "3]
//
//C:\>arg 1 "2 "" 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 "]
//argv[3]=[3]
//
//C:\>arg 1 "2 \" 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 " 3]
//
//C:\>arg 1 "2 \\" 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 \]
//argv[3]=[3]
//
//C:\>arg 1 "2 \\\" 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 \" 3]
//
//C:\>arg 1 "2 \"\ 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 "\ 3]
//
//C:\>arg 1 "2 \"\\ 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 "\\ 3]
//
//C:\>arg 1 "|"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[|]
//
//C:\>arg 1 |
//命令語法不正確。
//
//C:\>arg 1 ^|
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[|]
//
//C:\>arg 1 >
//命令語法不正確。
//
//C:\>arg 1 ^>
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[>]
//
//C:\>arg 1 <
//命令語法不正確。
//
//C:\>arg 1 ^<
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[<]
//
//C:\>arg 1 &
//argv[0]=[arg]
//argv[1]=[1]
//
//C:\>arg 1 &&
//命令語法不正確。
//
//C:\>arg 1 ^&
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[&]
//
//C:\>arg 1 ^&&
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[&]
//
//C:\>arg 1 ^&^&
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[&&]
//
//命令行解釋器概述命令行解釋器是一個單獨的軟件程序,它可以在用戶和操作系統之間提供直接的通訊。非圖形命令行解釋器用戶界面提供運行基於字符的應用程序和實用程序的環境。通過使用類似於 MS-DOS 命令解釋程序 Command.com 的單獨字符,命令行解釋器執行程序並在屏幕上顯示其輸出。Windows 服務器操作系統命令行解釋器使用命令解釋程序 Cmd.exe(該程序加載應用程序並指導應用程序之間的信息流動)將用戶輸入轉換爲操作系統可理解的形式。
//
//可以使用命令行解釋器創建和編輯可自動執行常規任務的批處理文件(也稱作腳本)。例如,可以使用腳本自動管理用戶帳戶或夜間備份。還可以使用 Windows 腳本宿主 CScript 的命令行版本在命令行解釋器中運行更高級的腳本。詳細信息,請參閱運行 Windows 腳本宿主。通過使用批處理文件來執行操作,可比使用用戶界面更有效率。批處理文件接受命令行上可用的所有命令。有關批處理文件和腳本的詳細信息,請參閱使用批處理文件。
//
//您可以自定義命令提示符窗口以易於查看並增強對程序運行方式的控制。有關自定義命令提示符窗口的詳細信息,請參閱配置命令提示符。
//
//使用命令語法
//語法按命令及所帶參數必須遵循的鍵入順序出現。下面的 xcopy 命令示例顯示了各種語法文本格式:
//
//xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:MM-DD-YYYY]] [/u] </em> [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:File1[+[File2]][+[File3]] [{/y | /-y}] [/z]
//
//下表說明如何解釋不同的文本格式。
//
//格式化圖例
//    格式    含義
//    斜體    用戶必須提供的信息
//    粗體    用戶必須準確鍵入的要顯示的元素
//    省略號  (...) 在命令行中可多次重複的參數
//    中括號  ([]) 可選項
//    大括號  ({});選項用豎線 (|) 分隔。例如:{even|odd} 用戶必須從選項集合中選擇一個
//
//使用多個命令和條件處理符號
//使用條件處理符號可以在單個命令行或腳本中運行多個命令。通過條件處理符號運行多個命令時,條件處理符號右邊的命令根據條件處理符號左邊命令的執行結果來發揮作用。例如,只有在前一個命令失敗的情況下才可能需要運行一個新命令。或者,只有在前一個命令成功時纔可能需要運行一個新命令。
//
//可以使用下表列出的特殊字符來傳遞多個命令。
//
//字符       語法                   定義
//& [...]    Command1 & Command2    用來分隔一個命令行中的多個命令。Cmd.exe 運行第一個命令,然後運行第二個命令。
//&& [...]   Command1 && Command2   只有在符號 && 前面的命令成功時,才運行該符號後面的命令。Cmd.exe 運行第一個命令,然後只有在第一個命令運行成功時才運行第二個命令。
//|| [...]   Command1 || Command2   只有在符號 || 前面的命令失敗時,才運行符號 || 後面的命令。Cmd.exe 運行第一個命令,然後只有在第一個命令未能運行成功(接收到大於零的錯誤代碼)時才運行第二個命令。
//( ) [...]  (Command1 & Command2)  用來分組或嵌套多個命令。
//
// 注意
//
//“與”符號 (&)、管道符號 (|) 以及括號 () 是特殊字符,將它們作爲參數傳遞時,必須在其前面加上轉義字符 (^) 或引號。
//如果某個命令成功完成操作,該命令就返回零 (0) 退出代碼或不返回任何退出代碼。有關退出代碼的詳細信息,請參閱 Microsoft Windows 部署和資源工具包。
//嵌套命令行解釋器
//通過在命令提示符下打開新的 Cmd.exe 實例,可以在 Cmd.exe 內嵌套命令行解釋器。默認情況下,Cmd.exe 的每個實例繼承其父 Cmd.exe 應用程序的環境。通過嵌套 Cmd.exe 的實例,可以更改局部環境,而不會影響 Cmd.exe 的父應用程序。這使您能夠保留 Cmd.exe 的原始環境,並在終止嵌套的命令行解釋器之後返回到原始環境。但是在嵌套的命令行解釋器中所做的更改將不會被保存。
//
//要嵌套命令行解釋器,請在命令提示符下鍵入:
//
//cmd
//
//出現類似於下面內容的消息:
//
//Microsoft (R) Windows Server 2003 Standard Edition (TM)
//(C) 版權所有 1985-2002 Microsoft Corp.
//要關閉嵌套的命令行解釋器,請鍵入 exit。
//
//使用 setlocal 和 endlocal 命令,可以在 Cmd.exe 的實例中(或在腳本中)進一步將更改局部化。Setlocal 創建局部作用範圍,而 endlocal 終止局部作用範圍。在 setlocal 和 endlocal 作用範圍內所做的更改將會被放棄,從而保持原始環境不變。這兩個命令的嵌套最高可達到 32 級。有關 setlocal 和 endlocal 命令的詳細信息,請參閱 Setlocal 和 Endlocal。
//
//將環境變量與 Cmd.exe 一起使用
//Cmd.exe 命令行解釋器環境由確定命令行解釋器和操作系統行爲的變量進行定義。可以使用兩種類型的環境變量(系統和局部)來定義命令行解釋器環境或整個操作系統環境的行爲。系統環境變量定義全局操作系統環境的行爲。局部環境變量定義 Cmd.exe 當前實例環境的行爲。
//
//系統環境變量預置於操作系統之中,並可用於所有 Windows 服務器操作系統進程。只有具有管理憑據的用戶纔可以更改系統變量。這些變量最常用於登錄腳本。
//
//局部環境變量只有在創建變量時針對的目標用戶登錄到計算機時纔有效。HKEY_CURRENT_USER 配置單元中設置的局部變量只對當前用戶有效,但它們可定義全局操作系統環境的行爲。
//
//下表按優先順序的降序描述變量的各種類型:
//
//內置系統變量
//在 HKEY_LOCAL_MACHINE 配置單元中找到的系統變量
//在 HKEY_CURRENT_USER 配置單元中找到的局部變量
//在 Autoexec.bat 文件中設置的所有環境變量和路徑
//在登錄腳本(如果有的話)中設置的所有環境變量
//在腳本或批處理文件中交互使用的變量
//在命令行解釋器中,Cmd.exe 的每個實例都繼承其父應用程序的環境。因此,可以在不影響父應用程序環境的情況下更改新的 Cmd.exe 環境中的變量。
//
//下表列出 Windows server operating system 的系統和本地環境變量。
//
//變量                     類型       描述
//%ALLUSERSPROFILE%        本地       返回“所有用戶”配置文件的位置。
//%APPDATA%                本地       返回默認情況下應用程序存儲數據的位置。
//%CD%                     本地       返回當前目錄字符串。
//%CMDCMDLINE%             本地       返回用來啓動當前的 Cmd.exe 的準確命令行。
//%CMDEXTVERSION%          系統       返回當前的“命令處理程序擴展”的版本號。
//%COMPUTERNAME%           系統       返回計算機的名稱。
//%COMSPEC%                系統       返回命令行解釋器可執行程序的準確路徑。
//%DATE%                   系統       返回當前日期。使用與 date /t 命令相同的格式。由 Cmd.exe 生成。有關 date 命令的詳細信息,請參閱 Date。
//%ERRORLEVEL%             系統       返回上一條命令的錯誤代碼。通常用非零值表示錯誤。
//%HOMEDRIVE%              系統       返回連接到用戶主目錄的本地工作站驅動器號。基於主目錄值而設置。用戶主目錄是在“本地用戶和組”中指定的。
//%HOMEPATH%               系統       返回用戶主目錄的完整路徑。基於主目錄值而設置。用戶主目錄是在“本地用戶和組”中指定的。
//%HOMESHARE%              系統       返回用戶的共享主目錄的網絡路徑。基於主目錄值而設置。用戶主目錄是在“本地用戶和組”中指定的。
//%LOGONSERVER%            本地       返回驗證當前登錄會話的域控制器的名稱。
//%NUMBER_OF_PROCESSORS%   系統       指定安裝在計算機上的處理器的數目。
//%OS%                     系統       返回操作系統名稱。Windows 2000 顯示其操作系統爲 Windows_NT。
//%PATH%                   系統       指定可執行文件的搜索路徑。
//%PATHEXT%                系統       返回操作系統認爲可執行的文件擴展名的列表。
//%PROCESSOR_ARCHITECTURE% 系統       返回處理器的芯片體系結構。值:x86 或 IA64(基於 Itanium)。
//%PROCESSOR_IDENTFIER%    系統       返回處理器說明。
//%PROCESSOR_LEVEL%        系統       返回計算機上安裝的處理器的型號。
//%PROCESSOR_REVISION%     系統       返回處理器的版本號。
//%PROMPT%                 本地       返回當前解釋程序的命令提示符設置。由 Cmd.exe 生成。
//%RANDOM%                 系統       返回 0 到 32767 之間的任意十進制數字。由 Cmd.exe 生成。
//%SYSTEMDRIVE%            系統       返回包含 Windows server operating system 根目錄(即系統根目錄)的驅動器。
//%SYSTEMROOT%             系統       返回 Windows server operating system 根目錄的位置。
//%TEMP%和%TMP%            系統和用戶 返回對當前登錄用戶可用的應用程序所使用的默認臨時目錄。有些應用程序需要 TEMP,而其他應用程序則需要 TMP。
//%TIME%                   系統       返回當前時間。使用與                                                                                   time       /t                                                                     命令相同的格式。由         Cmd.exe                  生成。有關                       time   命令的詳細信息,請參閱 Time。
//%USERDOMAIN%             本地       返回包含用戶帳戶的域的名稱。
//%USERNAME%               本地       返回當前登錄的用戶的名稱。
//%USERPROFILE%            本地       返回當前用戶的配置文件的位置。
//%WINDIR%                 系統       返回操作系統目錄的位置。
//
//設置環境變量
//使用 set 命令創建、更改、刪除或顯示環境變量。set 命令只更改當前解釋器環境中的變量。
//
//要查看變量,請在命令提示符下鍵入:
//
//set VariableName
//
//要添加變量,請在命令提示符下鍵入:
//
//set variablename=Value
//
//要刪除變量,請在命令提示符下鍵入:
//
//set VariableName=
//
//可以將大多數字符用作變量值,其中包括空格。如果使用特殊字符 <、>、|、& 或 ^,則必須在它們前面加上轉義字符 (^) 或引號。如果使用引號,則必須將引號作爲值的組成部分,因爲等號後面的任何內容都會被視爲值。請考慮下列示例:
//
//要創建變量值 new&name,請鍵入:
//set varname=new^&name
//
//要創建變量值 "new&name",請鍵入:
//set varname="new&name"
//
//如果在命令提示符下鍵入 set varname=new&name,就會出現與下面內容類似的錯誤消息:
//“'name' 不是內部或外部文件,也不是可運行的程序或批處理文件。”
//變量名不區分大小寫。但是,set 顯示的變量與您鍵入的完全相同。可以在變量名中結合使用大寫字母和小寫字母,這樣可以使代碼更具有可讀性(例如,UserName)。
//
// 注意
//
//單個環境變量的最大大小爲 8192 字節。
//所有環境變量的大小總和(包括變量名和等號)最大爲 65,536 KB。
//替換環境變量值
//要在命令行或腳本中啓用變量值替換,請將變量名包括在百分號之中(即,%VariableName%)。使用百分號可以確保 Cmd.exe 引用變量值,而不是進行文字比較。爲變量名定義變量值之後,請將變量名包括在百分號之中。Cmd.exe 搜索該變量名的所有實例,並用定義的變量值進行替換。例如,如果創建包含不同值(例如,用戶名)的腳本,並且想要用這些值爲每個用戶定義 USERNAME 環境變量,可以使用包括在百分號之中的 USERNAME 來編寫代碼。運行此腳本時,Cmd.exe 將用變量值替換 %USERNAME%,這樣就消除了爲每個用戶手動執行此任務的必要。變量替換是不可遞歸的。Cmd.exe 檢查變量一次。有關變量替換的詳細信息,請參閱 For 和 Call。


發佈了69 篇原創文章 · 獲贊 4 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章