1. 程式人生 > >bat.檔案的命令語法 和如何獲得時間戳

bat.檔案的命令語法 和如何獲得時間戳

 常用命令 

echo、@、call、pause、rem(小技巧:用::代替rem)是批處理檔案最常用的幾個命令,我們就從他們開始學起。 

==== 注 =========== 
首先, @ 不是一個命令, 而是DOS 批處理的一個特殊標記符, 僅用於遮蔽命令列回顯. 下面是DOS命令列或批處理中可能會見到的一些特殊標記符: 
CR(0D) 命令列結束符 
Escape(1B) ANSI轉義字元引導符 
Space(20) 常用的引數界定符 
Tab(09) ; = 不常用的引數界定符 
+ COPY命令檔案連線符 
* ? 檔案萬用字元 
"" 字串界定符 
| 命令管道符 
< > >> 檔案重定向符 
@ 命令列回顯遮蔽符 
/ 引數開關引導符 
: 批處理標籤引導符 
% 批處理變數引導符 

其次, :: 確實可以起到rem 的註釋作用, 而且更簡潔有效; 但有兩點需要注意: 
第一, 除了 :: 之外, 任何以 :開頭的字元行, 在批處理中都被視作標號, 而直接忽略其後的所有內容, 只是為了與正常的標號相區別, 建議使用 goto 所無法識別的標號, 即在 :後緊跟一個非字母數字的一個特殊符號. 
第二, 與rem 不同的是, ::後的字元行在執行時不會回顯, 無論是否用echo on開啟命令列回顯狀態, 因為命令直譯器不認為他是一個有效的命令列, 就此點來看, rem 在某些場合下將比 :: 更為適用; 另外, rem 可以用於 config.sys 檔案中. 
===================== 

echo 表示顯示此命令後的字元 
echo off 表示在此語句後所有執行的命令都不顯示命令列本身 
@與echo off相象,但它是加在每個命令列的最前面,表示執行時不顯示這一行的命令列(只能影響當前行)。 
call 呼叫另一個批處理檔案(如果不用call而直接呼叫別的批處理檔案,那麼執行完那個批處理檔案後將無法返回當前檔案並執行當前檔案的後續命令)。 
pause 執行此句會暫停批處理的執行並在螢幕上顯示Press any key to continue...的提示,等待使用者按任意鍵後繼續 
rem 表示此命令後的字元為解釋行(註釋),不執行,只是給自己今後參考用的(相當於程式中的註釋)。 
==== 注 ===== 
此處的描述較為混亂, 不如直接引用個命令的命令列幫助更為條理 

------------------------- 
ECHO 

當程式執行時,顯示或隱藏批處理程式中的正文。也可用於允許或禁止命令的回顯。 

在執行批處理程式時,MS-DOS一般在螢幕上顯示(回顯)批處理程式中的命令。 
使用ECHO命令可關閉此功能。 

語法 

ECHO [ON|OFF] 

若要用echo命令顯示一條命令,可用下述語法: 

echo [message] 

引數 

ON|OFF 
指定是否允許命令的回顯。若要顯示當前的ECHO的設定,可使用不帶引數的ECHO 
命令。 

message 
指定讓MS-DOS在螢幕上顯示的正文。 

------------------- 

CALL 

從一個批處理程式中呼叫另一個批處理程式,而不會引起第一個批處理的中止。 

語法 

CALL [drive:][path]filename [batch-parameters] 

引數 

[drive:][path]filename 
指定要呼叫的批處理程式的名字及其存放處。檔名必須用.BAT作副檔名。 


batch-parameters 
指定批處理程式所需的命令列資訊。 

------------------------------- 

PAUSE 

暫停批處理程式的執行並顯示一條訊息,提示使用者按任意鍵繼續執行。只能在批處 
理程式中使用該命令。 

語法 

PAUSE 


REM 

在批處理檔案或CONFIG.SYS中加入註解。也可用REM命令來遮蔽命令(在CONFIG.SYS 
中也可以用分號 ; 代替REM命令,但在批處理檔案中則不能替代)。 

語法 

REM [string] 

引數 

string 
指定要遮蔽的命令或要包含的註解。 
======================= 

例1:用edit編輯a.bat檔案,輸入下列內容後存檔為c:a.bat,執行該批處理檔案後可實現:將根目錄中所有檔案寫入 a.txt中,啟動UCDOS,進入WPS等功能。 

批處理檔案的內容為: 命令註釋:

下面弄幾個例子玩下. 程式碼copy至txt 然後重新命名成bat檔案

1.獲取當前時間戳. 可做為命名.

@echo off
set date0=%date:~0,10%
set time0=%time:~1,8%
set dttm=%date0:-=%%time0::=%
echo 當前時間為%date0%_%time0% 縮寫成:%dttm%&&pause >nul