Windows下不區(qū)分大小寫!
Batch:
batch -- 批處理;
batch file -- 批處理文件;
DOS批處理;
由DOS或者Windows內(nèi)嵌命令解釋器(如cmd.exe)解釋執(zhí)行;
類似Unix中的shell腳本;
在批處理中,不僅可以使用系統(tǒng)本身提供的命令,還能使用已安裝的第三方提供的工具或軟件;
一般情況下,每條命令占一行,當(dāng)然也可以將多條命令用特定符號(hào)(&,&&,|,||)分隔后寫到同一行;
系統(tǒng)在解釋運(yùn)行批處理程序時(shí),首先掃描整個(gè)批處理程序,然后從第一行代碼開始詳細(xì)逐句執(zhí)行所有命令,直至程序結(jié)尾或遇見 exit 命令或出錯(cuò)意外退出。
基礎(chǔ)批處理命令:
echo ? ?#打開或關(guān)閉回顯;
rem ? ?#注釋命令;
pause ? ?#暫停命令;
call ? ?#從一個(gè)批處理程序調(diào)用另一個(gè)批處理程序,并且不終止父批處理程序;
start ? ?#調(diào)用外部程序,所有的 dos命令 都可以由start命令來調(diào)用;
goto ? ?#跳轉(zhuǎn)命令;
set ? ?#顯示、設(shè)置或刪除變量;
批處理常用符號(hào)
回顯屏蔽 @
輸出重定向 > 與 >>
輸入重定向 <
管道符號(hào) |
轉(zhuǎn)義符 ^
邏輯命令符 & ?&& ?||
&,無條件執(zhí)行&后面的命令;
&&,當(dāng)&&前面的命令成功后才執(zhí)行&&后面的命令,否則不執(zhí)行;
||,當(dāng) || 前面的命令失敗時(shí),才執(zhí)行 || 后面的命令,否則不執(zhí)行;
基礎(chǔ) dos 命令
文件操作系統(tǒng)
vol
lable
文件夾管理
cd
md/mkdir
rd/rmdir
dir
tree
path
xcopy
文件管理
type
copy
del/erase
move
ren/rename
replace
attrib
find
fc
網(wǎng)絡(luò)相關(guān)
ping
ftp
net
telnet
ipconfig
msg
arp
系統(tǒng)管理
at
shutdown
tskill
taskkill
tasklist
sc
reg
powercfg
其他命令
cls
assoc
ftype
對(duì)于以上列出的命令,cmd中,在命令后面 /? 即可查看該命令的幫助信息。
批處理命令用法:
echo和@回顯控制命令
echo ? ? ? ? ? ?#關(guān)閉單行回顯;
echo off ? ? ? ?#從下一行開始關(guān)閉回顯;
@echo off ? ? ? ?#從本行開始關(guān)閉回顯,一般批處理第一行都是這個(gè);
echo on ? ? ? ?#從下一行開始打開回顯;
echo ? ? ? ? ? #顯示當(dāng)前是 echo on 還是 echo off ;
echo. ? ? ? ?#輸出一個(gè)“回車換行”;
echo hello world ? ? ? ?#輸出 hello world
#關(guān)閉回顯 是指運(yùn)行批處理文件時(shí),不顯示文件里的每條命令,只顯示運(yùn)行結(jié)果批處理開始和結(jié)束時(shí),系統(tǒng)都會(huì)自動(dòng)打開
errorlevel程序返回碼
echo %errorlevel% ? ?#查看返回碼的值
#執(zhí)行成功默認(rèn)為 0;一般命令執(zhí)行出錯(cuò)為 1
dir顯示目錄的文件和子目錄列表
dir
dir /a ? ? ? ?#列出所有文件和目錄,包括隱藏文件;
dir d: ? ? ? ?#列出D盤;
dir d: /A:d ? ? ? ?#列出D盤中的目錄;
#/A:屬性
/A? ? ? ? ? 顯示具有指定屬性的文件。
#屬性
D? 目錄? ? ? ? ? ? ? ? R? 只讀文件
H? 隱藏文件? ? ? ? ? ? A? 準(zhǔn)備存檔的文件
S? 系統(tǒng)文件? ? ? ? ? ? I? 無內(nèi)容索引文件
L? 解析點(diǎn)? ? ? ? ? ? -? 表示“否”的前綴
type顯示文件內(nèi)容
type d:\hello.txt
title
title ?HelloWorld
#設(shè)置cmd窗口的標(biāo)題
date和time
date ? ?#顯示并修改日期
time ? ?#顯示并修改時(shí)間
goto 和 :
:label
goto label ? ?#跳轉(zhuǎn)到指定的標(biāo)簽,并從標(biāo)簽后一條命令開始執(zhí)行批處理程序
find(外部命令)
find “abc” d:\hello.txt
tasklist | find /i "qq.exe"
#成功則errorlevel為0,如果找不到,則設(shè)置為1
%0 ?%1 %2 %3 %4 %5...%*
命令行傳遞給批處理的參數(shù),類似shell中$0,$1...
%0 批處理文件本身
%1 第一個(gè)參數(shù)
%* 從第一個(gè)參數(shù)開始的所有參數(shù)
批參數(shù)(%n)的替代已被增強(qiáng)
%~f1? ? ? ? - 將 %1 擴(kuò)充到一個(gè)完全合格的路徑名
%~d1? ? ? ? - 僅將 %1 擴(kuò)充到一個(gè)驅(qū)動(dòng)器號(hào)
%~p1? ? ? ? - 僅將 %1 擴(kuò)充到一個(gè)路徑
%~n1? ? ? ? - 僅將 %1 擴(kuò)充到一個(gè)文件名
%~x1? ? ? ? - 僅將 %1 擴(kuò)充到一個(gè)文件擴(kuò)展名
%~s1? ? ? ? - 擴(kuò)充的路徑指含有短名
%~a1? ? ? ? - 將 %1 擴(kuò)充到文件屬性
%~t1? ? ? ? - 將 %1 擴(kuò)充到文件的日期/時(shí)間
%~z1? ? ? ? - 將 %1 擴(kuò)充到文件的大小
%~$PATH : 1 - 查找列在 PATH 環(huán)境變量的目錄,并將 %1擴(kuò)充到找到的第一個(gè)完全合格的名稱。如果環(huán)境變量名未被定義,或者沒有找到文件,此組合鍵會(huì)擴(kuò)充到空字符串
可以組合修訂符來取得多重結(jié)果
%~dp1? ? ? ? - 只將 %1 擴(kuò)展到驅(qū)動(dòng)器號(hào)和路徑
%~nx1? ? ? ? - 只將 %1 擴(kuò)展到文件名和擴(kuò)展名
%~dp$PATH:1 - 在列在 PATH 環(huán)境變量中的目錄里查找 %1并擴(kuò)展到找到的第一個(gè)文件的驅(qū)動(dòng)器號(hào)和路徑
%~ftza1? ? ? - 將 %1 擴(kuò)展到類似 DIR 的輸出行
if命令
if "%1"=="/a" echo 第一個(gè)參數(shù)是/a
if /i "%1" equ "/a"
if exist f:\hello.txt (
echo 存在
)else(
echo 不存在
)
setlocal和endlocal
設(shè)置"命令擴(kuò)展名"和"延緩環(huán)境變量擴(kuò)充"
setlocal enableextensions ? ?#啟用命令擴(kuò)展名
setlocal disableextensions
setlocal enabledelayedexpansion ? ?#啟用延緩環(huán)境變量
setlocal disabledelayedexpansion
endlocal ? ?#恢復(fù)到使用setlocal語句前的狀態(tài)
set設(shè)置變量
引用變量可在變量前加 %,即 %變量名%
set? ? ? ? ? ? ? ? ? ? #顯示目前所有可用的變量,包括系統(tǒng)變量和自定義的變量
echo %SystemDrive%? ? ? #顯示系統(tǒng)盤盤符。系統(tǒng)變量可以直接引用
set p? ? ? ? ? ? ? ? ? #顯示所有以p開頭的變量,要是一個(gè)也沒有就設(shè)errorlevel=1
set p=aa1bb1aa2bb2? ? ? #設(shè)置變量p,并賦值為 = 后面的字符串,即aa1bb1aa2bb2
echo %p%? ? ? ? ? ? ? ? #顯示變量p代表的字符串,即aa1bb1aa2bb2
echo %p:~6%? ? ? ? ? ? #顯示變量p中第6個(gè)字符以后的所有字符,即aa2bb2
echo %p:~6,3%? ? ? ? ? #顯示第6個(gè)字符以后的3個(gè)字符,即aa2
echo %p:~0,3%? ? ? ? ? #顯示前3個(gè)字符,即aa1
echo %p:~-2%? ? ? ? ? ? #顯示最后面的2個(gè)字符,即b2
echo %p:~0,-2%? ? ? ? ? #顯示除了最后2個(gè)字符以外的其它字符,即aa1bb1aa2b
echo %p:aa=c%? ? ? ? ? #用c替換變量p中所有的aa,即顯示c1bb1c2bb2
echo %p:aa=%? ? ? ? ? ? #將變量p中的所有aa字符串置換為空,即顯示1bb12bb2
echo %p:*bb=c%? ? ? ? ? #第一個(gè)bb及其之前的所有字符被替換為c,即顯示c1aa2bb2
set p=%p:*bb=c%? ? ? ? #設(shè)置變量p,賦值為 %p:*bb=c% ,即c1aa2bb2
set /a p=39? ? ? ? ? ? #設(shè)置p為數(shù)值型變量,值為39
set /a p=39/10? ? ? ? ? #支持運(yùn)算符,有小數(shù)時(shí)用去尾法,39/10=3.9,去尾得3,p=3
set /a p=p/10? ? ? ? ? #用 /a 參數(shù)時(shí),在 = 后面的變量可以不加%直接引用
set /a p=”1&0″? ? ? ? ? #”與”運(yùn)算,要加引號(hào)。其它支持的運(yùn)算符參見set/?
set p=? ? ? ? ? ? ? ? ? #取消p變量
set /p p=請(qǐng)輸入
一些動(dòng)態(tài)變量
%SystemDrive% ? ?#系統(tǒng)盤符
%CD%? ? ? ? ? ? ? ? ? #代表當(dāng)前目錄的字符串
%DATE%? ? ? ? ? ? ? ? #當(dāng)前日期
%TIME%? ? ? ? ? ? ? ? #當(dāng)前時(shí)間
%RANDOM%? ? ? ? ? ? ? #隨機(jī)整數(shù),介于0~32767
%ERRORLEVEL%? ? ? ? ? #當(dāng)前 ERRORLEVEL 值
%CMDEXTVERSION%? ? ? ? #當(dāng)前命令處理器擴(kuò)展名版本號(hào)
%CMDCMDLINE%? ? ? ? ? #調(diào)用命令處理器的原始命令行
start命令
批處理中調(diào)用外部程序的命令,否則等外部程序完成后才繼續(xù)執(zhí)行剩下的指令
call命令
批處理中調(diào)用另一個(gè)批處理的命令,否則剩下的批處理指令將不會(huì)被執(zhí)行
choice選擇命令
讓用戶輸入一個(gè)字符,從而選擇運(yùn)行不同的命令,返回碼errorlevel為1234...
for循環(huán)命令
for %%i in (c: d: e: f:) do echo %%i
for /?
subst(外部命令)
映射磁盤
subst ? ?#顯示目前所有的映射
subst z: serverd ? ?#這樣就可以訪問serverd了
xcopy(外部命令)
文件拷貝
xcopy e:mp3 f:mpe /s/e/i/y
檢測(cè)Windows下某個(gè)進(jìn)程是否存活,不存活則執(zhí)行,并把它寫入Windows任務(wù)計(jì)劃中。
tasklist | find /i "mongod.exe"
if errorlevel 1 (
? ? start "" "f:\mongostart.bat"
)
Windows任務(wù)計(jì)劃
創(chuàng)建基本任務(wù)
單位是天,時(shí)分秒的話,在最后創(chuàng)建好計(jì)劃任務(wù)后進(jìn)入計(jì)劃任務(wù)屬性去修改!