掃一遍,旨在認識,不在熟悉。
常用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編碼的文字,需要借助type
或more
預處理機制
逐條,命令關鍵字,運算子,開關、引數,變數引用…
所有的變數引用都已被替換成字串常量,變數值在復合語句內部被改變,不會影響到語句內部的其他任何地方。
延遲變數的擴充套件行為
在適當位置使用setlocal enabledelayedexpansion
語句,把原本使用百分號對閉合的變數引用改為使用感嘆號對來閉合
@echo off
setlocal enabledelayedexpansion
set num=0&&echo !num!
pause
在適當的位置使用call
語句,把變數引用的單層百分號對改為雙層百分號對
@echo off
set num=0&&call echo %%num%%
pause
為什麼要使用變數延遲?因為要讓復合語句內部的變數實時感知到變數值的變化。
復合語句有:for
語句、if
else
語句、用連線符&
、||
和&&
連線的語句、用管道符號|
連線的語句,以及用括號
括起來的、由多條語句組合而成的語句塊。
特殊字元
"\>"
、"\<"
、"\@"
、"\|"
不能實現自己想要的功能,將特殊字元替換成ascii表中的十進位制數,然後再把ascii的10進製數換算成ascii字元處理。
變數set varname=varvalue
set /p var=請輸入變數的值:
,等待使用者輸入到var
變數中
set /p= hello world!set /a
運算表示式
內部處理變數
if defined
和set /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,它表現...