1.初衷:html
bat 批處理文件:當我懶得一個個操做的時候,能夠把若干東西放到一個文件裏面,開機運行或者須要的時候手動運行、節省時間。web
2.命令集說明windows
2.1 經常使用命令api
2.1.0 help瀏覽器
命令 /? help 命令
type /? >>tmp.txt (把 type 命令的幫助信息寫入到tmp.txt文件裏)
2.1.1 @ ( 僅影響當前行, 相對於echo off 來講,是遮住了一行,而不是擋住了一片 )tcp
不顯示@後面的命令,在入侵過程當中(例如使用批處理來格式化敵人的硬盤)天然不能讓對方看到你使用的命令啦。
eg 關閉回顯(以後的指令再也不顯示,只輸出執行結果):@echo off函數
2.1.2 echo學習
打開回顯或關閉請求回顯功能,或顯示消息。若是沒有任何參數,echo 命令將顯示當前回顯設置。網站
echo 顯示當前回顯設置編碼
echo on 打開回顯,即顯示指令輸入及其輸出結果
echo off 隱藏後面的全部指令及其輸出結果( 在遇到 echo on 以前 )
echo 'hello' 單純輸出字符串
2.1.3 rem (可用::,: 代替rem, :Here is the description , ::Here is the description)
rem 註釋命令 : @Rem Here is the description
2.1.4 pause
pause 暫停,使程序掛起
@echo off
:begin
copy a:*.* d:\\back
echo Please put a new disk into driver A
pause
goto begin
,驅動器 A 中磁盤上的全部文件均複製到d:\\back中。顯示的註釋提示您將另外一張磁盤放入驅動器 A 時,pause 命令會使程序掛起,以便您更換磁盤,而後按任意鍵繼續處理
2.1.5 call
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]] 指定要調用的批處理程序的位置和名稱。filename 參數必須具備 .bat 或 .cmd 擴展名
一個批處理程序調用另外一個批處理程序,而且不終止父批處理程序
2.1.6 start
啓動單獨的「命令提示符」窗口來運行指定程序或命令
start ["title"] [/dPath] [/min] [/max] [{/separate |/shared}] [{/low | /normal | /high | /realtime | /abovenormal | belownormal}][/wait] [/B] [FileName] [parameters]
"title" 指定在「命令提示符」窗口標題欄中顯示的標題。
/dpatch 指定啓動目錄。
/i 將 Cmd.exe 啓動環境傳送到新的「命令提示符」窗口。
/min 啓動新的最小化窗口。
/max 啓動新的最大化窗口。
/separate 在單獨的內存空間啓動 16 位程序。
/shared 在共享的內存空間啓動 16 位程序。
/low 以空閒優先級啓動應用程序。
/normal 以通常優先級啓動應用程序。
/high 以高優先級啓動應用程序。
/realtime 以實時優先級啓動應用程序。
/abovenormal 以超出常規優先級的方式啓動應用程序。
/belownormal 以低出常規優先級的方式啓動應用程序。
/wait 啓動應用程序,並等待其結束。
/b 啓動應用程序時沒必要打開新的「命令提示符」窗口。除非應用程序啓用 CTRL+C,不然將忽略 CTRL+C 操做。使用 CTRL+BREAK 中斷應用程序。
2.1.7 choice
choice 使用此命令可讓用戶輸入一個字符,從而運行不一樣的命令
@echo off
choice /c dme
if errorlevel 3 goto defrag
if errorlevel 2 goto mem
if errotlevel 1 goto end
:defrag
echo '1'
goto end
:mem
echo '2'
goto end
:end
echo good bye
pause
2.1.8 if
if 表示將判斷是否符合規定的條件,從而決定執行不一樣的命令。 有三種格式
if "參數" == "字符串" if "%1"=="a" format a:
if exist config.sys edit config.sys if exist config.sys type config.sys
if errorlevel 2 goto x2
else 連用
if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) else (echo comment3 )
2.1.9 for
循環操做
2.2 組合命令
2.2.1 &
同時執行多條命令,而無論命令是否執行成功 dir z: & dir c:\\Ex4rch
2.2.2 &&
同時執行多條命令,當碰到執行出錯的命令後將不執行後面的命令 dir z: && dir c:\\Ex4rch
2.2.3 ||
同時執行多條命令,當碰到執行正確的命令後將不執行後面的命令,若是沒有出現正確的命令則一直執行完全部命令 dir fdImg || start website.txt
2.3 管道命令
2.3.1 |
第一條命令 | 第二條命令 [| 第三條命令...]
第一條命令的結果做爲第二條命令的參數來使用 netstat -n -p tcp|find ":49264">D:\\IP.log
2.3.2 >、>>
輸出重定向命令
將一條命令或某個程序輸出結果的重定向到特定文件中, > 與 >>的區別在於,>會清除調原有文件中的內容後寫入指定文件,而>>只會追加內容到指定文件中
echo hello world>website.txt
2.4 系統參數 ( 用戶及其設置不一樣值不一樣 )
%SystemRoot% === C:\WINDOWS (%windir% 一樣)
%ProgramFiles% === C:\Program Files
%USERPROFILE% === C:\Documents and Settings\Administrator (子目錄有「桌面」,「開始菜單」,「收藏夾」等)
如: 訪問我桌面的某個文檔 start %USERPROFILE%\desktop\website.txt
C:\Users\admin\Desktop>start C:\Users\admin\desktop\website.txt
%APPDATA% === C:\Documents and Settings\Administrator\Application Data
%TEMP% === C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp (%TEM% 一樣)
%APPDATA% === C:\Documents and Settings\Administrator\Application Data
%OS% === Windows_NT (系統)
%Path% === %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem (本來的設置)
%HOMEDRIVE% === C: (系統盤)
%HOMEPATH% === \Documents and Settings\Administrator
3.實際經驗分享
3.1 .bat 文件亂碼問題
新建一個txt文件 - 文件」=》「另存爲」, 在編碼的時候選擇「ANSI」 - 更改成 .bat 後綴 或者 .cmd
3.2 批量打開程序
@echo off
start C:\Users\admin\Desktop\mark.txt
start C:\Users\admin\Desktop\route.txt
start C:\Users\admin\Desktop\styleLogin.txt
start C:\"Program Files (x86)"\Tencent\QQ\Bin\QQScLauncher.exe
start C:\"Program Files (x86)"\Tencent\WeChat\WeChat.exe
start C:\Users\admin\AppData\Roaming\360se6\Application\360se.exe
start C:\Users\admin\Desktop\text.xlsx
echo "hello myboy"
pause
擴展:
開機啓動目錄
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
3.3 建立目錄文件並比較
dir*.exe>exeback.txt & dir *.dll>dllback.txt
fc exeback.txt exeback1.txt>diff.txt
3.4 傳遞參數給批處理文件
%[1-9]表示參數,參數是指在運行批處理文件時在文件名後加的以空格(或者Tab)分隔的字符串。
變量能夠從%0到%9,%0表示批處理命令自己,其它參數字符串用 %1 到 %9 順序表示。
call test2.bat "hello" "haha" (執行同目錄下的「test2.bat」文件,並輸入兩個參數)
在「test2.bat」文件裏寫:
echo %1 (打印: "hello")
echo %2 (打印: "haha")
echo %0 (打印: test2.bat)
echo %19 (打印: "hello"9)
4.經常使用 api
md d:\aa 建立文件夾
set /p pass=請輸入密碼 等待用戶輸入、同時設置變量 ( 附帶 pause 做用 )
color 0a 設置控制檯顏色 ( 背景色 0 文本顏色 a , both : 0-f )
cls : 清屏
start C:\Users\admin\AppData\Roaming\360se6\Application\360se.exe http://www.baidu.com 打開瀏覽器 並訪問網站
修改文件的文件名 rename test.jpg test2.JPG rename *.jpg *.888.JPG
ren 原文件名 新文件名 重命名文件名
tree 以樹形結構顯示出目錄,用參數-f 將列出第個文件夾中文件名稱
type 文件名 顯示文本文件的內容
tasklist >list.txt 將全部進程保存到list文件中(默認保存到當前目錄)
5. 查看內置命令幫助指令
ver /? cmd /? set /? rem /?
if /? echo /? goto /? for /?
shift /? call /? type /? find /?
findstr /? copy /?
6.字符串處理
6.1 割字符串,以查看時間爲例
%源字符串:~起始值,截取長度% (起始值從0開始;截取長度是可選的,若是省略逗號和截取長度,將會從起始值截取到結尾;
截取長度若是是負數,表示截取到倒數第幾個。)
"%time%" 顯示如:"11:04:23.03" (完整的時間"hh:mm:ss.tt")
"%time:~0,5%" 顯示"hh:mm"(即"11:04"),其中0表示從右向左移位操做的個數,5表示從左向右移位操做的個數
"%time:~0,8%" 顯示標準時間格式"hh:mm:ss"(即"11:04:23",前8個字符串)
"%time:~3,-3%"顯示"mm:ss"(即從第4個開始,截去最後3個的字符串)
"%time:~3%" 顯示"04:23.03"(即去掉前4個字符串)
"%time:~-3%" 顯示".tt"(即最後3個字符串)
上面的字串分割格式,也能夠用於其它地方,如目錄路徑:"%cd:~0,10%"
6.2 替換字符串
set a="abcd1234"
echo %a% 顯示:"abcd1234"
set a=%a:1=kk% 替換「1」爲「kk」
echo %a% 顯示:"abcdkk234"
6.3 字符串合併
set str1=%str1%%str2% (合併 str1 和 str2)
6.4 計算字符串長度
沒有現成的函數。以下程序利用 goto造成循環,不斷將字符串截短1,並記錄截短的次數,到字符串變成空時的次數即長度。
set testStr=This is a test string
:: 將 testStr 複製到str,str 是個臨時字符串
set str=%testStr%
:: 標籤,用於goto跳轉
:next1
:: 判斷str是否是空,若是不是則執行下邊的語句
if not "%str%"=="" (
:: 算術運算,使num的值自增1,至關於num++或者++num語句
set /a num+=1
:: 截取字符串,每次截短1
set "str=%str:~1%"
:: 跳轉到next1標籤: 這裏利用goto和標籤,構成循環結構
goto next1
)
:: 當以上循環結構執行完畢時,會執行下邊的語句
echo testStr=%testStr%
echo testStr的長度爲:%num%
7. 文件處理
清空文件夾 del del /s /q test ( 完全刪除 指定文件 即 清空文件夾)
刪除文件夾 rd rmdir rd /s /q test 直接刪除整個文件夾
新建文件夾 md mkdir ::md %cd%\hello\cd mkdir %cd%\hello\cd
相關指令含義
/S 除目錄自己外,還將刪除指定目錄下的全部子目錄
/Q 安靜模式,帶 /S 刪除目錄樹時不要求確認
last. 相關文檔