1 簡單實例
(經常用于大的軟件項目開發中,使所有開發人員擁有相同的開發環境)
假如有E:\A\AA\aaa.txt 和E:\B . A和B中分別為你的項目代碼和輸出,則通過下面的批處理文件Path_subst則可以使你的代碼為M盤,而輸出為N盤,對于其他的開發人員則只需要修改批處理文件variables_setup中的變量所代表的路徑,也可以達到同樣的目的,使代碼和輸出分別在M和N盤。另外有時也需要文件的拷貝,參看copy.bat文件。
variables_setup.bat
REM?==============================================================================
REM?????This?is?an?example?for?setting?these?vairalbes.?Please?modify?them?
REM????for?your?own?environment.
REM?==============================================================================
set?Source_PathA="E:\A"
set?Dest_PathB="E:\B"Path_subst.bat

REM?=================================================================
REM?????run?variables_setup.bat?to?set?necessary?vairables?first
REM?=================================================================
call?variables_setup.bat

REM?=================================================================
REM?????substitue?dirves
REM?=================================================================
subst?M:?/d
subst?M:?"%Source_PathA%"

subst?N:?/d
subst?N:?"%Dest_PathB%"copy.bat
REM?========?copy??files

call?variables_setup.bat




copy?/-Y?%Source_PathA%\AA\*.txt?%Dest_PathB% 2 批處理文件命令Call 在一個批處理文件中調用另一個批處理文件,原批處理文件繼續執行.
Choice 暫停批處理文件的執行,提示讓用戶選擇.
Echo??? 顯示文本和選擇顯示方式.
Endlocal 還原setlocal中改變的環境變量
For 循環
Goto 跳轉.
If 條件選擇.
Pause 暫停執行,用戶按任意鍵繼續執行.
Rem 注釋.
Setlocal 開始使用新的環境變量,知道endlocal.
Shift 被用來改變批處理文件參數的位置.
3 命令行路徑和環境變量
命令行路徑是在命令行窗口中執行沒有指定路徑的命令或程序時,查找命令或程序的默認路徑,命令行路徑Path是一個系統變量,他允許你執行不在當前命令行窗口工作目錄下的命令和程序。可以使用以下方法修改:
1)Path命令:只修改當前打開的命令行窗口的路徑,增加新的路徑,語法:Path [%path%];[drive:]path
??????例如增加C:\Myfiles到路徑的最后,實現如下:Path %path%;C:\Myfiles ,如果你新增加到最前面,最先查找此目錄,則:Path C:\Myfiles;%path% (注意:路徑的查找順序是從前到后哦,第一個開始,。。。。)
2)Set命令,SetX命令,這2個命令處理能夠修改命令行路徑,還可以修改其他的環境變量,區別是set是修改只對當前打開的命令行窗口有效,而setx則是永久的修改路徑,相當于用windows的系統屬性窗口修改。使用語法實例如下:Set Path=%path%;C:\Myfiles ,Setx Path "%PATH%;C:\Myfiles" ,區別上面已經說了啊。
3)windows系統中的系統變量修改窗口,如下(都知道在那里找把,哈哈,在我的電腦右鍵->屬性->高級->環境變量)
注意:最好在修改前,現備份你原來的路徑哦,否則有可能。。
????????????還有有時由于安裝某些軟件,命令行窗口不能使用,則可能是由于原來的路徑沒有了,
????????????以下3個路徑是必須要有的哦,沒有的話趕快加上哦,怎么加,用上面3中方法中的一種就可以了:???C:\Windows\System32;C:\Windows;C:\Windows\System32\Wbem
4 命令的重定位>??? 使命令的輸出到文件或指定的分區,如果文件不存在則創建,如果已經存在則覆蓋 .
<??? 從指定的文件輸入,而不是從鍵盤.
>>? 增加輸出到指定文件的末尾,而不是覆蓋. 如果不存在則創建文件.
>& 命令的輸出作為另一個命令的輸入.
<& 讀取一個命令的輸入,輸出到另一個命令的輸出.
|???? 讀取一個命令的輸出發送為另一個命令的輸入. 這也被成為piping.
實例:Sort<Userlist.txt 排序userlist.txt文件的內容,輸出到命令行窗口
????????????<Userlist.txt 列舉uerlist.txt的內容,在命令行窗口
????????????Ipconfig>Test.log 將ipconfig的結構存到test.log中
????????????Ipconfig>>Test.log 區別于上面哦()
????????????Dir | sort>FileList.txt? 先對目錄下的目錄排序,然后存到filelist.txt中
????????????Dir | find ".txt" | more 列舉目錄下的txt文件,且實現分頁顯示,每按任意鍵則下一頁(Find *| more 經常使用的哦)
5 批處理中的異常處理和命令組
最常用的方法就是將異常輸出到txt或log文件,例如:Netstat >Report.txt > 2>&1
Standard Handles for Command Redirection
STDIN 0 Standard input is sent from the keyboard.
STDOUT 1 Standard output is sent to the command shell
window.
STDERR 2 Standard error output is sent to the command
shell window.
UNDEFINED 3 through 9 Application-specific handles.
命令組:通過&, &&, and || 實現命令執行的條件選擇等,還可以實現帶參數的命令組,實例:
Md C:\Reports\Final & Cd C:\Reports\Final 現建立,然后改為工作目錄
Cd C:\Reports\Mar98 && Copy Rep5.txt D:\Reports 只有先轉到目錄mar98,然后才copy文件
Cd C:\Reports\Mar98 || Md C:\Reports\Mar98 如果mar98目錄不存在,則創建他(跟編程語言中的差不多的)
6 Run As 命令
可以使一個登錄用戶使用另一個用戶執行其他的功能,更有利于系統的安全,例如在受限用戶中使用run as使用administrator的權限和功能。
命令的語法:Runas [{/profile | /noprofile}] [/env] [/netonly] [/savedcreds]
[/smartcard] [/trustlevel] [/showtrustlevels] /user:UserAccountName program
也可以選中程序右鍵中的->運行方式。如下圖:

thx!
zz