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

2021-05-28 10:01:17 字數 3011 閱讀 9720

常用命令 

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 

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

********************=== 

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

用PUSHD POPD獲得bat檔案執行的路徑

pushd popd是為了獲得bat檔案執行的路徑。這個很實用,比如我們想在程式裡呼叫bat檔案,bat檔案內容如下,先安裝乙個windows service,然後啟動它 installutil.exe i mywindowsservice.exe net.exe start mywindowsse...

用PUSHD POPD獲得bat檔案執行的路徑

pushd popd是為了獲得bat檔案執行的路徑。這個很實用,比如我們想在程式裡呼叫bat檔案,bat檔案內容如下,先安裝乙個windows service,然後啟動它 installutil.exe i mywindowsservice.exe net.exe start mywindowsse...

如何獲得和修改檔案的時間

自己寫了一些函式來獲得和修改檔案的時間。函式 getfiletimeinfo tchar tszdebug finf max path bool getfiletimeinfo win32 find data pfiledata,const tchar ptszfilename if hfind i...