Windows下的bat原來能夠爲咱們作不少

用了windows系統這麼多年了,對bat也不是很瞭解。最近研究了一下bat的用法。這裏就大概列舉一下本身的用法javascript

參考網址php

基本命令

echo

  • echo咱們能夠理解成程序中的輸出,和咱們Java的System.out.println是一個效果。java

  • 關於echo有兩種設置 echo on 和echo off.前者是在此命令以後的命令都會顯示輸出,後者則不顯示後面的執行命令了程序員

@

  • @ 的功能和echo off的功能同樣都是讓命令不顯示的。惟一的區別的@ 影響的是當前行而echo off影響的是在其後的全部的命令行。
@echo off
    redis-server.exe redis.conf
  @pause
  • 例如上面的bat文件的語句最終執行的效果是 echo off 這個命令不顯示 由於@ 控制當前行不顯示。redis-server.exe redis.conf 這個命令也不顯示 。由於echo off以後的命令都不現實。除非遇到echo on在此開啓了顯示的功能。

call

  • call別人說和start功能同樣,可是本身測試call沒法使用,取而代之的我用的是start, start和call的做用就是在本bat文件中調用了別的bat文件。若是不用start或者call的話,那麼本bat文件將執行完別的bat就不在繼續執行本bat的其餘語句了。至關於Java中的break了。

pause

  • pause是暫停的意思,就是bat執行完了以後cmd窗口不會關閉而是在pause的地方輸出 press any key …. 。他和exit相對。exit是指程序結束後就關閉窗口。正常pause和exit在文件的最後存在。

rem

  • 做爲程序員都是知道註釋的重要性的。就算是本身寫的代碼沒有良好的註釋過一段時間本身都會忘記這段代碼的做用。而在bat批處理語言中rem就是起到註釋的做用。
    rem 我是註釋

參數傳遞

  • Java或者其餘語言中都是能夠進行參數傳遞的,這樣能夠增長各個模塊的聯繫,bat也是能夠傳遞參數的。他的傳遞參數的方法比較特別,不須要指定參數的類型。只是按參數的順序來獲取的。分別用%0~%9來獲取參數。這樣也就是說參數只能是9個。其中%0表示的bat方法的自己。%1~%9表示第幾個參數。redis

  • 新建一個method.bat,內容爲echo %1。咱們新開cmd窗口。首先cd到method.bat所在的文件目錄中。執行語句 method.bat helloworld 程序結果 爲 helloworld。windows

特殊命令

  • 上面的一些基礎的命令以外還有一些屬於高級命令 ,正常狀況寫咱們作邏輯判斷的時候常常用到 if goto choice for,這四個使咱們常常用到。

if

  • if 就是咱們用到的程序判斷,根據條件執行不一樣的語句。其中的基本格式以下markdown

    if 「%1」==」test」 echo test測試

  • 上面的代碼執行的效果就是輸入了test的參數就會輸出test 結果,輸入的能夠是「 hello world 」 ,在程序中的參數就是帶引號的參數。ui

  • if [not] exist 判斷不存在是執行的語句spa

  • if exist 判斷存在時存在的語句

  • if errorlevel num 根據程序的返回值判斷

goto

  • goto就是跳轉到哪裏 基本語法
goto zxh
 :zxh
 echo 跳轉啦
  • 其中goto去的端點 須要用:開頭

choice

  • 這個選擇項用的挺多的,由於考慮程序的大衆化,咱們程序正常會給用戶提供選擇,這裏就須要用到了choice了。

  • 關於choice中有哪些參數,咱們能夠打開cmd窗口執行 choice /?
    這裏寫圖片描述

  • 上面的一張圖片已經解釋了choice的選項說明,咱們有設麼格式的提示選項上面的圖片事列已經列出了五種類型的。咱們根據不一樣需求些不一樣的bat.

  • 其中在/c後面的提示列表的編號咱們一次是1,2,3….N。在咱們根據errorlevel的值判斷的時候必須從高到底好比以下一段代碼纔有效

@echo off
choice /C dme /M "defrag,mem,end"
if errorlevel 3 goto end
if errorlevel 2 goto mem
if errorlevel 1 goto defrag

:defrag
echo I am defrag
goto end

:mem
echo I am mem
goto end

:end
echo good bye
pause

for

  • for循環是咱們遍歷數據用的最多了。咱們常常經過for來執行相同理念的操做。
FOR %%variable IN (set) DO command [command-parameters]
  • 上面的for循環其實用Java語言寫就是一下代碼
for(Object obj in List<Object>){
//執行操做
}
  • 因此上面的variable就是下面的obj
  • set 就是下面的list集合
  • command是咱們的執行操做
  • command parameters 是咱們執行操做的時候用到的參數正常就是variable(obj)

    這裏寫圖片描述

相關文章
相關標籤/搜索