批處理系列 1 基礎

2022-05-07 08:39:11 字數 2605 閱讀 7267

掃一遍,旨在認識,不在熟悉。

常用dos命令

if/else語句

for語句

for %variable in(set) do command [command-parameters]

- "options"(delims、tokens、skip、eol、userbackq、變數延遲)

解析文字,讀取字串,

eol=str - 忽略以指定字元打頭的行(預設忽略以分號打頭的行的功能,因為以分號打頭的行在很多語言中都是作為注釋語句)

skip=n - 跳過無關內容,直奔主題

delims=符號列表 - 切分字串的利器,預設以空格和tab作分割符

tokens=x,y,m-n - 定點提取

%~i - 刪除任何引號("),擴充套件 %i(形式變數)

%~fi - 將 %i 擴充套件到乙個完全合格的路徑名

%~di - 僅將 %i 擴充套件到乙個驅動器號

%~pi - 僅將 %i 擴充套件到乙個路徑

%~ni - 僅將 %i 擴充套件到乙個檔名

%~xi - 僅將 %i 擴充套件到乙個副檔名

%~si - 擴充套件的路徑只含有短名

%~ai - 將 %i 擴充套件到檔案的檔案屬性

%~ti - 將 %i 擴充套件到檔案的日期/時間

%~zi - 將 %i 擴充套件到檔案的大小

%~$path:i - 查詢列在路徑環境變數的目錄,並將 %i 擴充套件

到找到的第乙個完全合格的名稱。如果環境變數名

未被定義,或者沒有找到檔案,此組合鍵會擴充套件到

空字串

可以組合修飾符來得到多重結果:

%~dpi - 僅將 %i 擴充套件到乙個驅動器號和路徑

%~nxi - 僅將 %i 擴充套件到乙個檔名和副檔名

%~fsi - 僅將 %i 擴充套件到乙個帶有短名的完整路徑名

%~dp$path:i - 搜尋列在路徑環境變數的目錄,並將 %i 擴充套件

到找到的第乙個驅動器號和路徑。

%~ftzai - 將 %i 擴充套件到類似輸出線路的 dir

原來的for語句中第乙個括號內的寫法要做如下變動:

for語句不能直接讀取unicode編碼的文字,需要借助typemore

預處理機制

逐條,命令關鍵字,運算子,開關、引數,變數引用…

所有的變數引用都已被替換成字串常量,變數值在復合語句內部被改變,不會影響到語句內部的其他任何地方。

延遲變數的擴充套件行為

在適當位置使用setlocal enabledelayedexpansion語句,把原本使用百分號對閉合的變數引用改為使用感嘆號對來閉合

@echo off

setlocal enabledelayedexpansion

set num=0&&echo !num!

pause

在適當的位置使用call語句,把變數引用的單層百分號對改為雙層百分號對

@echo off

set num=0&&call echo %%num%%

pause

為什麼要使用變數延遲?因為要讓復合語句內部的變數實時感知到變數值的變化。

復合語句有:for語句、ifelse語句、用連線符&||&&連線的語句、用管道符號|連線的語句,以及用括號括起來的、由多條語句組合而成的語句塊。

特殊字元

"\>""\<""\@""\|"不能實現自己想要的功能,將特殊字元替換成ascii表中的十進位制數,然後再把ascii的10進製數換算成ascii字元處理。

變數set varname=varvalue

set /p var=請輸入變數的值:,等待使用者輸入到var變數中

set /p= hello world!set /a運算表示式

內部處理變數

if definedset /a因為都是在內部處理變數,而不是在預處理過程中處理,也就是說不需要使用變數擴充套件標記,所以天然具有變數延遲的特性;

至於逗號表示式,這是set /a才能處理的特性;

cmd的預處理過程,是把兩個表示式理解為一句,而不是乙個語句塊,所以自然不可能延遲擴充套件變數。

IT基礎 批處理

小續 看了下時間,10年寫的了 批處理是個很強大的東西,現在任何乙個工具都包含這個功能,只是被工具給封閉起來了 懷念下dos時代的批處理啊 rem即高階語言中的注釋的意思,能看懂每個程式的作用了吧 echo off rem call命令的應用 type a.txt call c.bat echo 現...

批處理符號(1)

一 這個字元在批處理中的意思是關閉當前行的回顯。我們從前幾課知道echo off可以關閉掉整個批處理命令的回顯,但不能關掉echo off這個命令,現在我們在echo off這個命令前加個 就可以達到所有命令均不回顯的要求 1.bat echo off dir d 2.bat echo off di...

批處理指令碼 基礎

批處理是windows下的一種指令碼 後面統稱批處理指令碼 一般就是字尾為.bat或者.cmd的檔案。雙擊該檔案,或者在命令列中輸入該檔名 注意絕對路徑和相對路徑 就可以逐行執行其中的內容。批處理指令碼由windows下面的cmd.exe程式來處理,可以通過如下的方式來開啟乙個cmd.exe,它表現...