Windows批处理(cmd/bat)常用命令
Windows批處理(cmd/bat)常用命令
一、總結
一句話總結:
?
1、批量處理圖片的方式?
PS批處理是基于強大的圖片編輯軟件Photoshop的,用來批量處理圖片的腳本;
?
?
2、大量的重復的操作用什么來做?
批處理
?
?
?
二、Windows批處理(cmd/bat)常用命令
前言
批處理文件(batch file)包含一系列 DOS命令,通常用于自動執行重復性任務。用戶只需雙擊批處理文件便可執行任務,而無需重復輸入相同指令。編寫批處理文件非常簡單,但難點在于確保一切按順序執行。編寫嚴謹的批處理文件可以極大程度地節省時間,在應對重復性工作時尤其有效。
在Windows中善用批處理可以簡化很多重復工作
什么是批處理
批處理(Batch),也稱為批處理腳本。顧名思義,批處理就是對某對象進行批量的處理。批處理文件的擴展名為bat。
目前比較常見 的批處理包含兩類:DOS批處理和PS批處理。PS批處理是基于強大的圖片編輯軟件Photoshop的,用來批量處理圖片的腳本;而DOS批處理則是基于DOS命令的,用來自動地批量地執行DOS命令以實現特定操作的腳本。這里要講的就是DOS批處理。
批處理是一種簡化的腳本語言,它應用于DOS和Windows系統中,它是由DOS或者Windows系統內嵌的命令解釋器(通常是COMMAND.COM或者CMD.EXE)解釋運行。類似于Unix中的Shell腳本。批處理文件具有.bat或者.cmd的擴展名,其最簡單的例子,是逐行書寫在命令行中會用到的各種命令。更復雜的情況,需要使用if,for,goto等命令控制程序的運行過程,如同C,Basic等中高級語言一樣。如果需要實現更復雜的應用,利用外部程序是必要的,這包括系統本身提供的外部命令和第三方提供的工具或者軟件。
批處理文件,或稱為批處理程序,是由一條條的DOS命令組成的普通文本文件,可以用記事本直接編輯或用DOS命令創建,也可以用DOS下的文本編輯器Edit.exe來編輯。在“命令提示”下鍵入批處理文件的名稱,或者雙擊該批處理文件,系統就會調用Cmd.exe運行該批處理程序。一般情況下,每條命令占據一行;當然也可以將多條命令用特定符號(如:&、&&、|、||等)分隔后寫入同一行中;還有的情況就是像if、for等較高級的命令則要占據幾行甚至幾十幾百行的空間。
系統在解釋運行批處理程序時,首先掃描整個批處理程序,然后從第一行代碼開始向下逐句執行所有的命令,直至程序結尾或遇見exit命令或出錯意外退出。
批處理命令簡介
- echo
- rem
- pause
- call
- start
- goto
- set
http://xstarcd.github.io/wiki/windows/windows_cmd_summary_commands.html
批處理符號簡介
- 回顯屏蔽 @
- 重定向1 >與>>
- 重定向2 <
- 管道符號 |
- 轉義符 ^
- 邏輯命令符包括:&、&&、||
http://xstarcd.github.io/wiki/windows/windows_cmd_summary_symbols.html
常用DOS命令
文件夾管理
- cd 顯示當前目錄名或改變當前目錄。
- md 創建目錄。
- rd 刪除一個目錄。
- dir 顯示目錄中的文件和子目錄列表。
- tree 以圖形顯示驅動器或路徑的文件夾結構。
- path 為可執行文件顯示或設置一個搜索路徑。
- xcopy 復制文件和目錄樹。
文件管理
- type 顯示文本文件的內容。
- copy 將一份或多份文件復制到另一個位置。
- del 刪除一個或數個文件。
- move 移動文件并重命名文件和目錄。(Windows XP Home Edition中沒有)
- ren 重命名文件。
- replace 替換文件。
- attrib 顯示或更改文件屬性。
- find 搜索字符串。
- fc 比較兩個文件或兩個文件集并顯示它們之間的不同
網絡命令
- ping 進行網絡連接測試、名稱解析
- ftp 文件傳輸
- net 網絡命令集及用戶管理
- telnet 遠程登陸
- ipconfig顯示、修改TCP/IP設置
- msg 給用戶發送消息
- arp 顯示、修改局域網的IP地址-物理地址映射列表
系統管理
- at 安排在特定日期和時間運行命令和程序
- shutdown立即或定時關機或重啟
- tskill 結束進程
- taskkill結束進程(比tskill高級,但WinXPHome版中無該命令)
- tasklist顯示進程列表(Windows XP Home Edition中沒有)
- sc 系統服務設置與控制
- reg 注冊表控制臺工具
- powercfg控制系統上的電源設置
對于以上列出的所有命令,在cmd中輸入命令+/?即可查看該命令的幫助信息。如find /?
Windows Batch 常用命令
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 | 1 echo 和 @ 回顯命令 @ #關閉單行回顯 echo off #從下一行開始關閉回顯 @echo off #從本行開始關閉回顯。一般批處理第一行都是這個 echo on #從下一行開始打開回顯 echo #顯示當前是 echo off 狀態還是 echo on 狀態 echo. #輸出一個”回車換行”,空白行 #(同echo, echo; echo+ echo[ echo] echo/ echo)2 errorlevel echo %errorlevel% 每個命令運行結束,可以用這個命令行格式查看返回碼 默認值為0,一般命令執行出錯會設 errorlevel 為13 dir 顯示文件夾內容 dir #顯示當前目錄中的文件和子目錄 dir /a #顯示當前目錄中的文件和子目錄,包括隱藏文件和系統文件 dir c: /a:d #顯示 C 盤當前目錄中的目錄 dir c: /a:-d #顯示 C 盤根目錄中的文件 dir c: /b/p #/b只顯示文件名,/p分頁顯示 dir *.exe /s #顯示當前目錄和子目錄里所有的.exe文件4 cd 切換目錄 cd #進入根目錄 cd #顯示當前目錄 cd /d d:sdk #可以同時更改盤符和目錄5 md 創建目錄 md d:abc #如果 d:a 不存在,將會自動創建中級目錄 #如果命令擴展名被停用,則需要鍵入 mkdir abc。6 rd 刪除目錄 rd abc #刪除當前目錄里的 abc 子目錄,要求為空目錄 rd /s/q d:temp #刪除 d:temp 文件夾及其子文件夾和文件,/q安靜模式7 del 刪除文件 del d:test.txt #刪除指定文件,不能是隱藏、系統、只讀文件 del /q/a/f d:temp*.* 刪除 d:temp 文件夾里面的所有文件,包括隱藏、只讀、系統文件,不包括子目錄 del /q/a/f/s d:temp*.* 刪除 d:temp 及子文件夾里面的所有文件,包括隱藏、只讀、系統文件,不包括子目錄8 ren 重命名命令 ren d:temp tmp #支持對文件夾的重命名9 cls 清屏10 type 顯示文件內容 type c:boot.ini #顯示指定文件的內容,程序文件一般會顯示亂碼 type *.txt #顯示當前目錄里所有.txt文件的內容11 copy 拷貝文件 copy c:test.txt d:test.bak 復制 c:test.txt 文件到 d: ,并重命名為 test.bak copy con test.txt 從屏幕上等待輸入,按 Ctrl+Z 結束輸入,輸入內容存為test.txt文件 con代表屏幕,prn代表打印機,nul代表空設備 copy 1.txt + 2.txt 3.txt 合并 1.txt 和 2.txt 的內容,保存為 3.txt 文件 如果不指定 3.txt ,則保存到 1.txt copy test.txt + 復制文件到自己,實際上是修改了文件日期12 title 設置cmd窗口的標題 title 新標題 #可以看到cmd窗口的標題欄變了13 ver 顯示系統版本14 label 和 vol 設置卷標 vol #顯示卷標 label #顯示卷標,同時提示輸入新卷標 label c:system #設置C盤的卷標為 system15 pause 暫停命令16 rem 和 :: 注釋命令 注釋行不執行操作17 date 和 time 日期和時間 date #顯示當前日期,并提示輸入新日期,按"回車"略過輸入 date/t #只顯示當前日期,不提示輸入新日期 time #顯示當前時間,并提示輸入新時間,按"回車"略過輸入 time/t #只顯示當前時間,不提示輸入新時間18 goto 和 : 跳轉命令 :label #行首為:表示該行是標簽行,標簽行不執行操作 goto label #跳轉到指定的標簽那一行19 find (外部命令) 查找命令 find "abc" c:test.txt 在 c:test.txt 文件里查找含 abc 字符串的行 如果找不到,將設 errorlevel 返回碼為1 find /i “abc” c:test.txt 查找含 abc 的行,忽略大小寫 find /c "abc" c:test.txt 顯示含 abc 的行的行數20 more (外部命令) 逐屏顯示 more c:test.txt #逐屏顯示 c:test.txt 的文件內容21 tree 顯示目錄結構 tree d: #顯示D盤的文件目錄結構22 & 順序執行多條命令,而不管命令是否執行成功23 && 順序執行多條命令,當碰到執行出錯的命令后將不執行后面的命令 find "ok" c:test.txt && echo 成功 如果找到了"ok"字樣,就顯示"成功",找不到就不顯示24 || 順序執行多條命令,當碰到執行正確的命令后將不執行后面的命令 find "ok" c:test.txt || echo 不成功 如果找不到"ok"字樣,就顯示"不成功",找到了就不顯示25 | 管道命令 dir *.* /s/a | find /c ".exe" 管道命令表示先執行 dir 命令,對其輸出的結果執行后面的 find 命令 該命令行結果:輸出當前文件夾及所有子文件夾里的.exe文件的個數 type c:test.txt|more 這個和 more c:test.txt 的效果是一樣的26 > 和 >> 輸出重定向命令 > 清除文件中原有的內容后再寫入 >> 追加內容到文件末尾,而不會清除原有的內容 主要將本來顯示在屏幕上的內容輸出到指定文件中 指定文件如果不存在,則自動生成該文件 type c:test.txt >prn 屏幕上不顯示文件內容,轉向輸出到打印機 echo hello world>con 在屏幕上顯示hello world,實際上所有輸出都是默認 >con 的 copy c:test.txt f: >nul 拷貝文件,并且不顯示"文件復制成功"的提示信息,但如果f盤不存在,還是會顯示出錯信息 copy c:test.txt f: >nul 2>nul 不顯示”文件復制成功”的提示信息,并且f盤不存在的話,也不顯示錯誤提示信息 echo ^^W ^> ^W>c:test.txt 生成的文件內容為 ^W > W ^ 和 > 是控制命令,要把它們輸出到文件,必須在前面加個 ^ 符號27 < 從文件中獲得輸入信息,而不是從屏幕上 一般用于 date time label 等需要等待輸入的命令 @echo off echo 2005-05-01>temp.txt date <temp.txt del temp.txt 這樣就可以不等待輸入直接修改當前日期28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %* 命令行傳遞給批處理的參數 %0 批處理文件本身 %1 第一個參數 %9 第九個參數 %* 從第一個參數開始的所有參數批參數(%n)的替代已被增強。您可以使用以下語法: %~1 - 刪除引號("),擴充 %1 %~f1 - 將 %1 擴充到一個完全合格的路徑名 %~d1 - 僅將 %1 擴充到一個驅動器號 %~p1 - 僅將 %1 擴充到一個路徑 %~n1 - 僅將 %1 擴充到一個文件名 %~x1 - 僅將 %1 擴充到一個文件擴展名 %~s1 - 擴充的路徑指含有短名 %~a1 - 將 %1 擴充到文件屬性 %~t1 - 將 %1 擴充到文件的日期/時間 %~z1 - 將 %1 擴充到文件的大小 %~$PATH : 1 - 查找列在 PATH 環境變量的目錄,并將 %1 擴充到找到的第一個完全合格的名稱。如果環境 變量名未被定義,或者沒有找到文件,此組合鍵會 擴充到空字符串可以組合修定符來取得多重結果: %~dp1 - 只將 %1 擴展到驅動器號和路徑 %~nx1 - 只將 %1 擴展到文件名和擴展名 %~dp$PATH:1 - 在列在 PATH 環境變量中的目錄里查找 %1, 并擴展到找到的第一個文件的驅動器號和路徑。 %~ftza1 - 將 %1 擴展到類似 DIR 的輸出行。 可以參照 call/? 或 for/? 看出每個參數的含意 echo load "%%1" "%%2">c:test.txt 生成的文件內容為 load "%1" "%2" 批處理文件里,用這個格式把命令行參數輸出到文件29 if 判斷命令 if "%1"=="/a" echo 第一個參數是/a if /i "%1" equ "/a" echo 第一個參數是/a /i 表示不區分大小寫,equ 和 == 是一樣的,其它運算符參見 if/? if exist c:test.bat echo 存在c:test.bat文件 if not exist c:windows ( echo 不存在c:windows文件夾 ) if exist c:test.bat ( echo 存在c:test.bat ) else ( echo 不存在c:test.bat )30 setlocal 和 endlocal 設置”命令擴展名”和”延緩環境變量擴充” SETLOCAL ENABLEEXTENSIONS #啟用"命令擴展名" SETLOCAL DISABLEEXTENSIONS #停用"命令擴展名" SETLOCAL ENABLEDELAYEDEXPANSION #啟用"延緩環境變量擴充" SETLOCAL DISABLEDELAYEDEXPANSION #停用"延緩環境變量擴充" ENDLOCAL #恢復到使用SETLOCAL語句以前的狀態 “命令擴展名”默認為啟用 “延緩環境變量擴充”默認為停用 批處理結束系統會自動恢復默認值 可以修改注冊表以禁用"命令擴展名",詳見 cmd /? 。所以用到"命令擴展名"的程 序,建議在開頭和結尾加上 SETLOCAL ENABLEEXTENSIONS 和 ENDLOCAL 語句,以確 保程序能在其它系統上正確運行 "延緩環境變量擴充"主要用于 if 和 for 的符合語句,在 set 的說明里有其實用例程31 set 設置變量 引用變量可在變量名前后加 % ,即 %變量名% set #顯示目前所有可用的變量,包括系統變量和自定義的變量 echo %SystemDrive% #顯示系統盤盤符。系統變量可以直接引用 set p #顯示所有以p開頭的變量,要是一個也沒有就設errorlevel=1 set p=aa1bb1aa2bb2 #設置變量p,并賦值為 = 后面的字符串,即aa1bb1aa2bb2 echo %p% #顯示變量p代表的字符串,即aa1bb1aa2bb2 echo %p:~6% #顯示變量p中第6個字符以后的所有字符,即aa2bb2 echo %p:~6,3% #顯示第6個字符以后的3個字符,即aa2 echo %p:~0,3% #顯示前3個字符,即aa1 echo %p:~-2% #顯示最后面的2個字符,即b2 echo %p:~0,-2% #顯示除了最后2個字符以外的其它字符,即aa1bb1aa2b echo %p:aa=c% #用c替換變量p中所有的aa,即顯示c1bb1c2bb2 echo %p:aa=% #將變量p中的所有aa字符串置換為空,即顯示1bb12bb2 echo %p:*bb=c% #第一個bb及其之前的所有字符被替換為c,即顯示c1aa2bb2 set p=%p:*bb=c% #設置變量p,賦值為 %p:*bb=c% ,即c1aa2bb2 set /a p=39 #設置p為數值型變量,值為39 set /a p=39/10 #支持運算符,有小數時用去尾法,39/10=3.9,去尾得3,p=3 set /a p=p/10 #用 /a 參數時,在 = 后面的變量可以不加%直接引用 set /a p=”1&0″ #”與”運算,要加引號。其它支持的運算符參見set/? set p= #取消p變量 set /p p=請輸入 屏幕上顯示”請輸入”,并會將輸入的字符串賦值給變量p 注意這條可以用來取代 choice 命令 注意變量在 if 和 for 的復合語句里是一次性全部替換的,如 @echo off set p=aaa if %p%==aaa ( echo %p% set p=bbb echo %p% ) 結果將顯示 aaa aaa 因為在讀取 if 語句時已經將所有 %p% 替換為aaa 這里的"替換",在 /? 幫助里就是指"擴充"、"環境變量擴充" 可以啟用”延緩環境變量擴充”,用 ! 來引用變量,即 !變量名! @echo off SETLOCAL ENABLEDELAYEDEXPANSION set p=aaa if %p%==aaa ( echo %p% set p=bbb echo !p! ) ENDLOCAL 結果將顯示 aaa bbb 還有幾個動態變量,運行 set 看不到 %CD% #代表當前目錄的字符串 %DATE% #當前日期 %TIME% #當前時間 %RANDOM% #隨機整數,介于0~32767 %ERRORLEVEL% #當前 ERRORLEVEL 值 %CMDEXTVERSION% #當前命令處理器擴展名版本號 %CMDCMDLINE% #調用命令處理器的原始命令行 可以用echo命令查看每個變量值,如 echo %time% 注意 %time% 精確到毫秒,在批處理需要延時處理時可以用到32 start 批處理中調用外部程序的命令,否則等外部程序完成后才繼續執行剩下的指令33 call 批處理中調用另外一個批處理的命令,否則剩下的批處理指令將不會被執行 有時有的應用程序用start調用出錯的,也可以call調用34 choice (外部命令) 選擇命令 讓用戶輸入一個字符,從而選擇運行不同的命令,返回碼errorlevel為1234…… win98里是choice.com win2000pro里沒有,可以從win98里拷過來 win2003里是choice.exe choice /N /C y /T 5 /D y>nul 延時5秒35 assoc 和 ftype 文件關聯 assoc 設置'文件擴展名'關聯,關聯到'文件類型' ftype 設置'文件類型'關聯,關聯到'執行程序和參數' 當你雙擊一個.txt文件時,windows并不是根據.txt直接判斷用 notepad.exe 打開 而是先判斷.txt屬于 txtfile '文件類型' 再調用 txtfile 關聯的命令行 txtfile=%SystemRoot%system32NOTEPAD.EXE %1 可以在"文件夾選項"→"文件類型"里修改這2種關聯 assoc #顯示所有'文件擴展名'關聯 assoc .txt #顯示.txt代表的'文件類型',結果顯示 .txt=txtfile assoc .doc #顯示.doc代表的'文件類型',結果顯示 .doc=Word.Document.8 assoc .exe #顯示.exe代表的'文件類型',結果顯示 .exe=exefile ftype #顯示所有'文件類型'關聯 ftype exefile #顯示exefile類型關聯的命令行,結果顯示 exefile="%1" %* assoc .txt=Word.Document.8 設置.txt為word類型的文檔,可以看到.txt文件的圖標都變了 assoc .txt=txtfile 恢復.txt的正確關聯 ftype exefile="%1" %* 恢復 exefile 的正確關聯 如果該關聯已經被破壞,可以運行 command.com ,再輸入這條命令36 pushd 和 popd 切換當前目錄 @echo off c: & cd & md mp3 #在 C: 建立 mp3 文件夾 md d:mp4 #在 D: 建立 mp4 文件夾 cd /d d:mp4 #更改當前目錄為 d:mp4 pushd c:mp3 #保存當前目錄,并切換當前目錄為 c:mp3 popd #恢復當前目錄為剛才保存的 d:mp437 for 循環命令 這個比較復雜,請對照 for/? 來看 for %%i in (c: d: e: f:) do echo %%i 依次調用小括號里的每個字符串,執行 do 后面的命令 注意%%i,在批處理中 for 語句調用參數用2個% 默認的字符串分隔符是"空格鍵","Tab鍵","回車鍵" for %%i in (*.txt) do find "abc" %%i 對當前目錄里所有的txt文件執行 find 命令 for /r . %%i in (*.txt) do find "abc" %%i 在當前目錄和子目錄里所有的.txt文件中搜索包含 abc 字符串的行 for /r . %%i in (.) do echo %%~pni 顯示當前目錄名和所有子目錄名,包括路徑,不包括盤符 for /r d:mp3 %%i in (*.mp3) do echo %%i>>d:mp3.txt 把 d:mp3 及其子目錄里的mp3文件的文件名都存到 d:mp3.txt 里去 for /l %%i in (2,1,8) do echo %%i 生成2345678的一串數字,2是數字序列的開頭,8是結尾,1表示每次加1 for /f %%i in ('set') do echo %%i 對 set 命令的輸出結果循環調用,每行一個 for /f "eol=P" %%i in ('set') do echo %%i 取 set 命令的輸出結果,忽略以 P 開頭的那幾行 for /f %%i in (d:mp3.txt) do echo %%i 顯示 d:mp3.txt 里的每個文件名,每行一個,不支持帶空格的名稱 for /f "delims=" %%i in (d:mp3.txt) do echo %%i 顯示 d:mp3.txt 里的每個文件名,每行一個,支持帶空格的名稱 for /f "skip=5 tokens=4" %%a in ('dir') do echo %%a 對 dir 命令的結果,跳過前面5行,余下的每行取第4列 每列之間的分隔符為默認的"空格" 可以注意到 dir 命令輸出的前5行是沒有文件名的 for /f "tokens=1,2,3 delims=- " %%a in ('date /t') do ( echo %%a echo %%b echo %%c ) 對 date /t 的輸出結果,每行取1、2、3列 第一列對應指定的 %%a ,后面的 %%b 和 %%c 是派生出來的,對應其它列 分隔符指定為 - 和"空格",注意 delims=- 后面有個"空格" 其中 tokens=1,2,3 若用 tokens=1-3 替換,效果是一樣的 for /f "tokens=2* delims=- " %%a in ('date /t') do echo %%b 取第2列給 %%a ,其后的列都給 %%b38 subst (外部命令) 映射磁盤。 subst z: serverd #這樣輸入z:就可以訪問serverd了 subst z: /d #取消該映射 subst #顯示目前所有的映時39 xcopy (外部命令) 文件拷貝 xcopy d:mp3 e:mp3 /s/e/i/y 復制 d:mp3 文件夾、所有子文件夾和文件到 e: ,覆蓋已有文件 加 /i 表示如果 e: 沒有 mp3 文件夾就自動新建一個,否則會有詢問 |
?
?
?
PS批處理是基于強大的圖片編輯軟件Photoshop的,用來批量處理圖片的腳本;
總結
以上是生活随笔為你收集整理的Windows批处理(cmd/bat)常用命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 码农很多,但程序员并不多......
- 下一篇: Java 对比Vector、ArrayL