bat 命令 常用配置及其用法


1.初衷:

bat 批處理文件:當我懶得一個個操作的時候,可以把若干東西放到一個文件里面,開機運行或者需要的時候手動運行、節省時間。

 

2.命令集說明

2.1 常用命令

2.1.0 help

命令 /?      help 命令
type /? >>tmp.txt  (把 type 命令的幫助信息寫入到tmp.txt文件里)

2.1.1 @  ( 僅影響當前行, 相對於echo off 來說,是遮住了一行,而不是擋住了一片 )

不顯示@后面的命令,在入侵過程中(例如使用批處理來格式化敵人的硬盤)自然不能讓對方看到你使用的命令啦。
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. 相關文檔

windows bat腳本編寫

Bat命令學習

BAT 批處理腳本 教程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM