【bat腳本】常見命令

Batch Script

若有錯誤,歡迎指出bash

常見命令

註釋

批腳本中只支持行註釋。命令行

rem 用於在批處理文件中添加註解或說明,且該命令會輸出一個換行;code

: 後緊跟一個:或空格、製表符也可起到註釋的做用。ip

ECHO 和 @

echo用以顯示消息和啓用或關閉命令回顯。rem

使用不帶參數的echo將顯示當前回顯設置,使用echo [on | off]打開或關閉回顯功能。字符串

顯示消息時,該命令將在消息後輸出兩個換行。cmd

echo緊跟一個.,那個將輸出空的消息,若是其後又緊跟文本,那麼.將被視爲 ,即echo.hi等同於echo histring

@置於命令前,將關閉該命令自己的回顯。it

CLS

清除屏幕。table

PAUSE

暫停批處理程序,並顯示如下消息:

請按任意鍵繼續. . .

若要顯示其它提示語,可使用echo [other prompt] & pause > nul

TITLE

設置命令提示窗口的窗口標題。

GOTO

將 cmd.exe 定向到批處理程序中帶標籤的行。

GOTO label

label 指定批處理程序中用做標籤的文字字符串。

標籤必須單獨一行,而且以冒號打頭。

使用特殊標籤``goto :eof將控制轉移到當前批腳本文件的結尾,注意eof前有:。通過試驗,通常的標籤前加上:`後仍可有效跳轉。

FIND

在文件中搜索字符串。

FIND [/V] [/C] [/N] [/I] "string" [[drive:][path]filename[ ...]]

param meaning
/V 顯示全部未包含指定字符串的行
/C 僅顯示包含字符串的行數
/N 顯示行號
/I 搜索字符串時忽略大小寫
"string" 指定要搜索的文本字符串
[drive:][path]filename 指定要搜索的文件

若是沒有指定路徑,FIND 將搜索在提示符處鍵入的文本或者由另外一命令產生的文本。

CMD

啓動 Windows 命令解釋器的一個新實例。

/C 執行字符串指定的命令而後終止
/K 執行字符串指定的命令但保留

若是指定了 /C 或 /K,則會將該開關以後的剩餘部分做爲一個命令行處理。

START

啓動一個單獨的窗口以運行指定的程序或命令。

START ["title"] [/D path] [/MIN] [/MAX] [command/program] [parameters]

  • "title" 在窗口標題欄中顯示的標題。

  • path 啓動目錄。

  • MIN 以最小化方式啓動窗口。

  • MAX 以最大化方式啓動窗口。

  • command/program

    • 若是它是內部 cmd 命令或批文件,則該命令處理器是使用 cmd.exe 的 /K 開關運行的。這表示運行該命令以後,該窗口將仍然存在。
    • 若是它不是內部 cmd 命令或批文件,則它就是一個程序,並將做爲一個窗口化應用程序或控制檯應用程序運行。
  • parameters 這些是傳遞給 command/program 的參數。

PUSHD 和 POPD

  • pushd
    • 保存當前目錄以供 POPD 命令使用,而後改到指定的目錄。
  • popd
    • 更改到 PUSHD 命令存儲的目錄。

SHIFT

更改批處理文件中可替換參數的位置。

SHIFT [/n]

若是命令擴展被啓用,SHIFT 命令支持/n 命令行開關;該命令行開關告訴命令從第 n 個參數開始移位;n 介於零和八之間。

例如:SHIFT /2會將 %3 移位到 %2,將 %4 移位到 %3,等等;而且不影響 %0 和 %1。

IF

條件判斷執行批處理程序中的條件處理。

IF [NOT] ERRORLEVEL number command

​ 若是最後運行的程序返回一個等於或大於指定數字的退出代碼,指定條件爲 true。

IF [NOT] string1==string2 command

IF [NOT] EXIST filename command

ELSE 子句

必須出如今同一行的 IF 以後,如:

@echo off
echo hello
fakeCommand
if not errorlevel 1 (
	echo world
) else (
	echo "That's impossible."
)
exit

EXIT

退出 CMD.EXE 程序(命令解釋器)或當前批處理腳本。

EXIT [/B] [exitCode]

/B 僅退出當前批腳本而不關閉 CMD.EXE。若是在批腳本外執行,則仍會關閉 CMD.EXE。

exitCode 指定一個數字。若是指定了 /B,將ERRORLEVEL設成該數字;不然退出 CMD.EXE,並用該數字設置過程退出代碼。

CALL

在一個批腳本文件中調用另外一個批腳本文件,並傳遞參數。

CALL [drive:][path]filename [batch-parameters]

該命令亦有以下形式:

CALL :label arguments

這將建立一個新的批腳本文件上下文,並傳遞參數。那麼如何從這種調用中退出呢?由於上下文被視爲一個批腳本文件,因此當控制流到達文件結尾時,該上下文便會結束,即便用goto :eof

示例

@echo off

call :func1 pass arguments as parameters
call :func2
exit /b

:func1
echo %*
echo Hello
goto :eof

:func2
echo World
goto :eof

批腳本上下文的參數

注意:這裏的參數指的是parameter

批腳本里的 %* 指出全部的參數(如 %1 %2 %3 %4 %5 ...)

可以使用如下語法對批參數(%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 的輸出行。

在上面的例子中,%1 和 PATH 能夠被其餘有效數值替換。%~ 語法終止於第一個有效參數號碼。

特殊變量

errorlevel

相似於bash中的?變量,使用echo %errorlevel%查看。通常當命令成功執行時,其值爲0

cd__cd__

C:\Users\never>echo %cd%
C:\Users\never

C:\Users\never>echo %__cd__%
C:\Users\never\
相關文章
相關標籤/搜索