Windows cmd 之特殊符號及變量
Windows cmd 特殊符號及變量
cmd 常用變量?
bat批處理常用命令
%1~%9表示拖入文件(%0以外的輸入文件),%0表示批處理文件本身??
%0~%1字母意思基本相同,不區(qū)分大小寫
::打印當(dāng)前窗口地址
echo “%cd%”?
%0 ?????????????????????????????? 獲取當(dāng)前文件路徑??
%~d0 ???????????????????????? ? 獲取當(dāng)前盤符? ??
%~dp0 ????????????????????? ???獲取當(dāng)前盤符和路徑? ??
%~f0 ????????????????????????? ???獲取當(dāng)前批處理全路徑? ??
%~sdp0 ????????????????? ?????獲取當(dāng)前盤符和路徑的短文件名格式? ??
%~nx0???????????????????????????獲取當(dāng)前文件文件名及后綴名??
%~n0 ????????????????????????????獲取當(dāng)前文件文件名??
%~x0 ?????????????????????????? ??獲取當(dāng)前文件后綴名??
?
%1? ? ??????????????????????????? ??獲取拖入文件完整路徑。如:"D:\ABC\adc.txt"??
%~1? ???????????????????????????? 獲取拖入文件完整路徑,并去掉首尾引號。如:D:\ABC\adc.txt??
%~n1 ????????????????????????????獲取拖入文件文件名。如:adc??
%~nx1 ????????????????????????? 獲取拖入文件文件名及后綴。如:adc.txt??
%~x1 ????????????????????????????獲取拖入文件后綴名。如:.txt??
%~dp1 ???????????????????????? 獲取拖入文件所在目錄完整路徑。如:D:\abc\??
%~d1 ???????????????????????????獲取拖入文件所在盤符。如:D:??
%~z1 ????????????????????????? ? 獲取拖入文件大小。如:1024??
%~t1 ????????????????????????? ? ?獲取拖入文件修改時(shí)間。如:2023/08/05 周一 19:01??
%cd% ??????????????????????????獲取拖入文件所在目錄完整路徑。如:D:\ABC?
?????????????????????????????????????沒有傳遞值獲取運(yùn)行程序完整路徑。如:C:\ABC?
?????????????????????????????????????如果傳遞值這為傳遞值路徑。如:D:\ABC
for 變量
在bat批處理里使用需要”%%“,cmd窗口使用只需要”%“
::獲取當(dāng)前目錄下所有a開頭的文件
for /f %%a in ('dir /s /b a*') do (? ??
%%a ?????????????????????????? 文件完整信息? ??
%%~da ??????????????????????保留文件所在驅(qū)動器信息
%%~pa ??????????????????????保留文件所在路徑信息
%%~aa ??????????????????????保留文件的文件屬性
%%~na ???????????????????????保留文件名信息? ??
%%~xa ???????????????????????保留文件后綴信息? ??
%%~za ???????????????????????保留文件大小信息? ??
%%~ta ????????????????????? ? 保留文件修改時(shí)間信息? ??
%%~dpa ?????????????????????保留文件所在驅(qū)動器和所在路徑信息? ??
%%~nxa ?????????????????? ???保留文件名及后綴信息? ??
%%~pnxa ?????????????????? ?保留文件所在路徑及文件名和后綴信息? ??
%%~dpna ????????????? ? ?? 保留文件驅(qū)動器、路徑、文件名信息? ??
%%~dpnxa????????????? ????保留文件驅(qū)動器、路徑、文件名、后綴信息? ??
set %var% 相關(guān)變量
::變量值偏移和替換配合for可以實(shí)現(xiàn)替換文件內(nèi)容
%var:str1=str2% ??????
?將var中的str1替換為str2(str2如果為空則可以達(dá)到刪除的效果,str1前可以加*,變量%ABC:*B=%是C)? ??
%var:~0,-2% ??????????????提取var 變量的所有字符,除了最后兩個? ??
%var:~-2% ????????????? ???提取var 變量的最后兩個? ??
特殊字符
字符@
一般配合@echo off,關(guān)閉命令所有回顯,包括本條命令,即不顯示輸入,只顯示輸出結(jié)果
字符>和字符>>???? 重定向輸入
>?
把文字結(jié)果寫入進(jìn)文本
123>123.txt??????抹去前文件內(nèi)容,沒有這個文件名就新建再寫入
>>
把文字追加進(jìn)文本
123>>123.txt ???把現(xiàn)有的文字追加進(jìn)去,保留原文件內(nèi)容
字符%%????引用變量
%%
%~1 ???? ? ????????基本用%0-%9這些變量使用
%cd% ?? ???????? 用于系統(tǒng)定義變量或自定義變量,常用的格式
%%i ????????????????只用于for循環(huán)里
字符!! ????? ??配合延時(shí)變量使用
setlocal enabledelayedexpansion 延時(shí)變量
!!
!a! ???????????????????當(dāng)啟用變量延遲時(shí),使用!!將變量名擴(kuò)起來表示對變量值的引用
字符^ ????????轉(zhuǎn)義符
^
^% ????????????????????%將失去它的應(yīng)用作用,變成普通符號,一個^只對后面一個符號生效
^> ??????????????????????可剝奪特殊符號的特殊意義,從而使其變成普通符號
字符:: ???????? 注釋信息
::
::123 ??????????????????注釋后的信息不會被執(zhí)行時(shí)顯示和執(zhí)行,用于信息標(biāo)注,::后面所有信息都將無效
字符: ???????????標(biāo)簽定位
:
:1 ????????????????????????可以接受goto命令所指向的標(biāo)簽,用于goto跳轉(zhuǎn)
字符& ???????????鏈接符
&
dir & cls ???????????????鏈接前后命令順序,系統(tǒng)按順序依次執(zhí)行,不夠前面命令是否執(zhí)行成功都繼續(xù)執(zhí)行后面命令
字符&& ?????????鏈接判斷
&&
123 && dir ???????????前一個命令執(zhí)行失敗后面命令不再執(zhí)行,前面命令執(zhí)行成功,后面就繼續(xù)執(zhí)行
字符| ???????????????管道符
|?
dir | find ????????????? ? ?將前面命令的輸出結(jié)果轉(zhuǎn)給后面進(jìn)行輸入
字符|| ????????????執(zhí)行判斷
||
123 || dir ????????????????前面命令執(zhí)行失敗才執(zhí)行后面命令,前面命令執(zhí)行成功后面不執(zhí)行
字符< ????????????反向重定符
<
<123.txt ????????????????將后面的信息讀取出來,可以用來讀文件信息給前面命令
字符"" ????????????界定符
""
"123 abc" ?????????????表示符號中的信息時(shí)一體的,空格時(shí)非常需要這個,不如系統(tǒng)會認(rèn)為時(shí)兩組信息
字符~
在for中表示使用增強(qiáng)的變量擴(kuò)展;
在set中表示使用擴(kuò)展環(huán)境變量指定位置的字符串;
在set/a中表示按位取反。
字符* ?????????????通配符
*
*.exe ????????????????????可以為任意字符
字符? ??????????????單字通配符
?
e?e ???????????????????????可以匹配任意一個字符
字符() ???????????????界定邊界
()
(dir /a/b) ?????????????????命令包含或者是具有優(yōu)先權(quán)的界定符
字符- ?????????????????范圍表示符
-
1-123 ???????????????????????表示范圍區(qū)間
字符= ????????????????賦值符號
=
a=b ??????????????????????????用于變量賦值,b賦值給a
字符''
''
'abc' ?????????????????????????在for/f中表示將它們包含的內(nèi)容當(dāng)作命令行執(zhí)行并分析其輸出;
'dbc'??????????????????????????在for/f "usebackq"中表示將它們包含的字符串當(dāng)作字符串分析。
字符.
. ???????????????????????????????表示當(dāng)前目錄
.. ??????????????????????????????表示上一級目錄
系統(tǒng)內(nèi)置變量
值由系統(tǒng)將其根據(jù)事先定義的條件自動賦值,我們可以直接調(diào)用使用
%cd% ? ?????????????? ???????????????????? 列出當(dāng)前目錄。
%date% ? ?????????????? ???????????????? 列出當(dāng)前日期。
%time% ? ?????????????? ???????????????? 列出當(dāng)前時(shí)間。
%temp% ? ?????????????? ?????????????? ?當(dāng)前用戶的緩存目錄。
%windir% ? ?????????????? ?????????????? 列出操作系統(tǒng)目錄的位置。
%Path% ? ????????????????????????????? ? 列出了可執(zhí)行文件的搜索路徑。
%pathext% ? ?????????????? ???????????? 列出操作系統(tǒng)認(rèn)為可被執(zhí)行的文件擴(kuò)展名。
%ProgramFiles% ? ??????????????? ? 列出了Program Files文件夾的路徑。
%errorlevel% ?????????????????????????? 列出了最近使用的命令的錯誤代碼。0表示成功
%random% ????????????????????????????? 列出界于0 和 32767之間的隨機(jī)數(shù)字。
%homedrive% ???????????????????????? 操作系統(tǒng)所在的分區(qū)號。如:C:
%systemroot% ? ?????????????? ???????C:\WINDOWS 當(dāng)前啟動的系統(tǒng)的所在目錄
%userprofile% ???????????????????????? C:\Users\abc 當(dāng)前用戶數(shù)據(jù)變量
%homepath% ????????????????????????? \Users\abc 當(dāng)前用戶環(huán)境變量
%system%????????????????????????????????C:\WINDOWS\SYSTEM32
%allusersprofile% ????????????????????列出所有用戶Profile文件位置。
%appdata% ???????????????????????????? 列出應(yīng)用程序數(shù)據(jù)的默認(rèn)存放位置。
%clientname%? ?????????????????????? 列出聯(lián)接到終端服務(wù)會話時(shí)客戶端的NETBIOS名。
%cmdcmdline% ????????????????????? 列出啟動當(dāng)前cmd.exe所使用的命令行。
%cmdextversion% ????????????????? 命令出當(dāng)前命令處理程序擴(kuò)展版本號。
%CommonProgramFiles%???? 列出了常用文件的文件夾路徑。C:\Program Files\Common Files
%computername% ???????????????? 列出了計(jì)算機(jī)名。
%comspec% ????????????????????????? ?列出了可執(zhí)行命令外殼(命令處理程序)的路徑。
%homeshare% ????????????????????? ?列出用戶共享主目錄的網(wǎng)絡(luò)路徑。
%logonsever% ?????????????????????? 列出有效的當(dāng)前登錄會話的域名控制器名。
%numeer_of_processors% ??列出了計(jì)算機(jī)安裝的處理器數(shù)。
%os% ??????????????????????????????????? ?列出操作系統(tǒng)的名字。
%processor_architecture%? ?列出了處理器的芯片架構(gòu)。
%processor_identfier% ????????列出了處理器的描述。
%processor_level%?????????????? 列出了計(jì)算機(jī)的處理器的型號。
%processor_revision% ????????列出了處理器的修訂號。
%prompt% ???????????????????????????? 列出了當(dāng)前命令解釋器的命令提示設(shè)置。
%sessionname% ????????????????? 列出連接到終端服務(wù)會話時(shí)的連接和會話名。
%systemdrive% ???????????????????? 列出了Windows啟動目錄所在驅(qū)動器。
%userdomain% ???????????????????? 列出了包含用戶帳號的域的名字。
%username%???????????????????????? 列出當(dāng)前登錄的用戶的名字。?
%logonserver% ???????????????????? 本地返回驗(yàn)證當(dāng)前登錄會話的域控制器的名稱