<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
【內容】:
注意:編輯bat檔案請使用ANSI編碼(不然會出現中文亂碼)
rem命令列註釋,可以回顯(語句會在命令列中顯示);
::兩個冒號,效果同上,但不會回顯。(冒號後加任意非字母數位字元都可起到註釋作用)
pause暫停,命令列中出現"請按任意鍵繼續..."
自定義暫停時的文字,如下:
::pause>nul,隱藏原暫停文字 echo 這裡是自定義文字! & pause > nul
echo後加內容即輸出該內容,如:echo "welcome!";
echo.換行命令,即echo後加一個點
@置於語句前則該條語句不會回顯(無視echo on)
echo off關閉回顯功能,直到出現echo on,但其本身會回顯,故其之前往往和@一起使用,即@echo off(關閉所有回顯功能)
@echo off rem 格式:echo 檔案內容>檔案路徑 echo @echo off>test1.bat ::其中>>在文末新增,>覆蓋原內容 echo echo this is test>>test1.bat echo pause>>test1.bat rem 顯示該檔案內容 type test1.bat pause
@echo off ::title設定標題 title 我測試一下! pause
例:color 0A
特別特別注意:if語句塊在執行時是當做一條語句載入的,故需要通過11中的延遲賦值來解決其內部變數參照的問題
::if常規用法,注意空格 @echo off :start set /p a= if not %a%==1 ( echo 請輸入1 goto start ) else ( echo 輸入正確 ) pause>nul
@echo off if not exist d:test.bat ( echo @echo off>d:test.bat ) else ( del d:test.bat ) pause>nul
@echo off set a=1 if defined a ( echo 已定義a ) else ( echo 未定義a ) pause>nul
@echo off set a=123 set b=abc set c=12 ::/i字串大小寫忽略 if /i %b% equ ABC ( if %a% geq %c% ( echo %a%^>=%c% ) else ( echo %a%^<%c% ) ) else ( echo %b%不等於ABC ) pause>nul
如上的運算元可以是字串、數值、變數;當參與比較的字串是字串時,將被轉換為對於的ASCII碼進行比較;比較運運算元有如下:
if語句中的'與'、'或'、'非'邏輯判斷
::'與'一般用if巢狀實現 @echo off set /p a= ::當a小於10且大於0 if %a% lss 10 if %a% gtr 0 echo 輸入的是0-10 pause
::'非'用not可以實現 @echo off set /p a= ::a不小於10 if not %a% lss 10 ( echo 輸入的是不小於10 ) pause
::'或'實現一:使用if巢狀(程式碼簡潔但邏輯不太好理解) @echo off set /p a=請輸入a: set /p b=請輸入b: ::a小於5或b小於5時 if %a% lss 5 (echo a小於5或b小於5) else (if %b% lss 5 (echo a小於5或b小於5) else (echo a、b都不小於5)) pause
::'或'實現二:使用額外變數標記結果,再判斷該變數(邏輯簡單但程式碼多) @echo off set /p a=請輸入a: set /p b=請輸入b: ::a小於5或b小於5時 set flag=0 if %a% lss 5 set flag=1 if %b% lss 5 set flag=1 if %flag% equ 1 ( echo a小於5或b小於5 ) else ( echo a、b都不小於5 ) pause
@echo off ::使用冒號加標記名作為goto語句的標記 :start set /p param= if %param%==4 (echo 請不要輸入4! & goto start) else (echo %param%) pause
@echo off set /p param=請輸入密碼: echo %param% pause
請特別注意這個機制,真的是特別噁心
::輸出為1 @echo off set a=1 set a=2&echo %a% pause
注意:批次處理在執行“set a=2&echo %a%”之前,會先把這一句整句讀取並做了預處理,即對變數a賦了值,那麼%a%值為1,為解決該問題,批次處理設計了變數延遲。也就是說,在讀取了一條完整的語句之後,不立即對該行的變數賦值,而會在某個單條語句執行之前再進行賦值,具體實現如下:
::輸出為2 @echo off&setlocal enabledelayedexpansion set a=1 set a=2&echo !a! pause
注意:'變數名=值'中間不要有空格
@echo off ::將0賦值給b set b=0 echo b:%b% ::將空格和0賦值給a set a= 0 echo a:%a% ::無法賦值 set c =0 echo c:%c% pause
@echo off ::檢視所有環境變數 echo ----------------ALL---------------------- set echo ----------------END---------------------- ::檢視環境變數JAVA_HOME的值 if defined JAVA_HOME ( echo JAVA_HOME:%JAVA_HOME% ) else ( echo 未定義JAVA_HOME ) pause
@echo off set a=1&set b=6 set c=%a%+%b% ::輸出1+6 echo %c% set d=a+b ::輸出a+b echo %d% set /a e=a+b ::輸出7 echo %e% pause
@echo off ::關鍵字for、in、do必有,括號必有 ::分隔符可以是逗號、分號、等號、空格 ::輸出為A換行1換行B。。。 for %%i in (A,B,C) do echo %%i & echo 1 pause>nul
@echo off ::找出D槽下所有檔案 for %%i in (d:*.*) do echo "%%i" pause
@echo off set str=c d e f g h i j k l m n o p q r s t u v w x y z echo 當前硬碟的分割區有: for %%i in (%str%) do if exist %%i: echo %%i: pause
@echo off ::找出當前目錄下檔名為四個字元的txt檔案 for %%i in (????.txt) do echo "%%i" pause
%0指該檔案本身,%1--%9為接收到的引數,如下例子中子程式的%1即為主程式傳輸的param1,%2即為param2
::該檔名為test.bat @echo off echo 這是主程式第一個輸出 timeout 2 start test1.bat param1 param2 timeout 2 echo 這是主程式第二個輸出 pause
::該檔名為test1.bat @echo off timeout 2 echo 這是子程式第一個輸出 echo 這是接收到的第一個引數%1 和第二個引數%2 pause
@echo off set /p param= if %param%==4 (echo 請不要輸入4!) else (echo %param%) ::%0在當前視窗重新呼叫自身 %0
::@echo off ::顯示當前目錄 cd ::切換到根目錄 cd ::碟符加冒號,切換到該盤 d: ::切換到e:hi目錄下(目錄名不區分大小寫) cd /d e:hi ::儲存當前目錄,並切換當前目錄為d:test pushd d:test ::恢復當前目錄為剛才儲存的e:hi popd pause
::建立資料夾 md e:testtest1 ::資料夾名有空格需要加引號 md "e:test op" ::空格隔開,建立多個 md e:test1 e:test9test2 "e:test5 lmn"
@echo off ::刪除e:test op下空資料夾,不為空不能刪除 rd "e:test op" ::刪除e:test9下所有資料夾,不管是否為空,但會詢問是否確認刪除[Y/N] rd /s e:test9 ::自定義刪除提示資訊 echo 是否刪除[Y/N]: & rd /s e:test9>nul ::/s/q聯合使用,不會詢問直接刪除 rd /s/q e:test9
@echo off ::資料夾移動,如果test資料夾存在,則將test5資料夾移動到test資料夾下 ::如果test資料夾不存在,則將test5資料夾移動到test1資料夾下並重新命名為test ::注意:資料夾移動不能跨分割區 move e:test5 e:test1test ::將d:test1.txt檔案移動到e:下並重新命名為23.txt ::如果該目錄已存在23.txt,則會覆蓋 move d:test1.txt e:23.txt>nul&&echo 移動成功並重新命名 ::將e:23.txt檔案移動到e:test資料夾下 move e:23.txt e:test>nul&&echo 移動到資料夾下
@echo off ::刪除該層目錄下的所有檔案,需要確認[Y/N] del d:test pause ::不需要確認 del /q d:test ::刪除該目錄下所有層級的檔案,不刪除資料夾,需要逐個資料夾確認 del /s d:test ::刪除檔案111.png,不需要確認 del d:test111.png
@echo off ::將d:testtest.txt複製到e:test1目錄下並重新命名為test2.txt ::如果test2.txt檔案已存在,將自動覆蓋 copy d:testtest.txt e:test1test2.txt ::將e:test該層目錄下所有檔案複製到d:test1test3資料夾下 ::前提d:test1test3資料夾必須已存在 ::相同檔名的檔案會被覆蓋 copy e:test d:test1test3
@echo off ::將e:test目錄下所有檔案(夾)複製到d:test1 ::/e目錄下所有檔案(夾),/y已存在時直接覆蓋 xcopy e:test d:test1 /e/y
@echo off cd /d d:test ::將129.txt和156.txt兩個檔案內容合併存入新建的new.txt中 copy 129.txt+156.txt new.txt ::列印出new.txt中的內容 type new.txt ::將d:mp3111.mp3和e:2.mp3以二進位制資料合併複製到d:new.mp3 ::其中/b二進位制,/a文字形式 copy /b d:mp3111.mp3+e:2.mp3 d:new.mp3
@echo off ::將1.txt重新命名為58.bat ren d:test1.txt 58.bat ::將d:test目錄下所有檔名為1開頭的txt檔案改為bat檔案 ren d:test1*.txt *.bat ::將d:test目錄下所有檔名為1開頭三個字元的bat改為txt檔案 ren d:test1??.bat ???.txt
在程式中呼叫子指令碼,在當前程式中執行子指令碼程式碼,子指令碼執行完後繼續執行本程式之後的程式碼
::該檔名為test.bat @echo off echo 這是主程式第一個輸出 timeout 2 call test1.bat param1 param2 timeout 2 echo 這是主程式第二個輸出 pause
::該檔名為test1.bat @echo off timeout 1 echo 這是子程式第一個輸出 echo 這是接收到的第一個引數%1 和第二個引數%2 pause
@echo off set a=1 :start echo %a%&set /a a=a+1 timeout 1 > nul goto start pause
@echo off ::每隔一秒輸出斐波拉契數列 set a=1 set b=1 echo %a%&timeout 1 >nul echo %b%&timeout 1 >nul :start set /a c=a+b echo %c%&set a=%b%&set b=%c% timeout 1 > nul goto start pause
注意:執行start時將開啟一個新執行緒來執行該程式,原程式不受影響繼續執行
@echo off ::開啟test.txt檔案 start e:test.txt ::啟動jar包 start java -jar e:demo.jar pause
啟動一個新的cmd視窗並在其內執行命令
https://www.jb51.net/article/245248.htm
::一、MSG命令方式 @echo off ::/time:5設定時間彈框的顯示時間為5S,5S後自動關閉 msg * /time:5 這裡是彈窗顯示的文字 pause ::設定彈窗的多行文字 (echo 這是彈窗的第一行文字 echo 這是第二行文字)|msg * /time:5 pause
::一、呼叫VBScript的MsgBox實現彈窗 @echo off ::第二個引數65的解釋在程式碼之後的列表中 mshta vbscript:msgbox("彈窗單行顯示內容",65,"彈窗的標題")(window.close) ::多行顯示文字可在文字中使用vbCrLf或vbNewLine set msg="多行顯示vbCrLf這是第二行vbNewLine這是第三行" mshta vbscript:msgbox(Replace(Replace(%msg%,"vbCrLf",vbCrLf),"vbNewLine",vbNewLine),6,"自定義標題")(window.close)
MsgBox的button引數取值如下:
0 = vbOKOnly - 只顯示確定按鈕。
1 = vbOKCancel - 顯示確定和取消按鈕。
2 = vbAbortRetryIgnore - 顯示放棄、重試和忽略按鈕。
3 = vbYesNoCancel - 顯示是、否和取消按鈕。
4 = vbYesNo - 顯示是和否按鈕。
5 = vbRetryCancel - 顯示重試和取消按鈕。
16 = vbCritical - 顯示臨界資訊圖示。
32 = vbQuestion - 顯示警告查詢圖示。
48 = vbExclamation - 顯示警告訊息圖示。
64 = vbInformation - 顯示資訊訊息圖示。
0 = vbDefaultButton1 - 第一個按鈕為預設按鈕。
256 = vbDefaultButton2 - 第二個按鈕為預設按鈕。
512 = vbDefaultButton3 - 第三個按鈕為預設按鈕。
768 = vbDefaultButton4 - 第四個按鈕為預設按鈕。
0 = vbApplicationModal - 應用程式模式:使用者必須響應訊息方塊才能繼續在當前應用程式中工作。
4096 = vbSystemModal - 系統模式:在使用者響應訊息方塊前,所有應用程式都被掛起。
注意:第一組值 (0 - 5) 用於描述對話方塊中顯示的按鈕型別與數目;第二組值 (16, 32, 48, 64) 用於描述圖示的樣式;第三組值 (0, 256, 512) 用於確定預設按鈕;而第四組值 (0, 4096) 則決定訊息方塊的樣式。在將這些數位相加以生成 buttons 引數值時,只能從每組值中取用一個數位。
可嘗試以下兩種方式
@ echo off %1 %2 ver|find "5.">nul&&goto :Admin mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :Admin","","runas",1)(window.close)&goto :eof :Admin ::上面這段程式碼之後執行的所有東西都是管理員許可權方式
@echo off >nul 2>&1 "%SYSTEMROOT%system32cacls.exe" "%SYSTEMROOT%system32configsystem" if '%errorlevel%' NEQ '0' ( echo 請求管理員許可權... goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%getadmin.vbs" "%temp%getadmin.vbs" exit /B :gotAdmin echo 獲得管理員許可權 pause
@echo off ::按行讀取d:test.txt檔案中的內容,輸出每行的第一個資料,預設每行內以空格和tab為分隔符 for /f %%i in (d:test.txt) do echo %%i ::delims引數指定分隔符為/ for /f "delims=/" %%i in (d:test.txt) do echo %%i ::tokens引數指定讀取第二列,tokens=*讀取所有 for /f "tokens=2 delims=/" %%i in (d:test.txt) do echo %%i ::skip引數直接跳過前兩行,從第三行開始 ::tokens=2,*讀取第二個和之後剩餘所有,%%i為第一列值,%%j為之後剩餘所有 ::tokens=1,4讀取第一個和第四個,%%i為第一列值,%%j為第四列值 ::('net start')表示將單引號內語句的執行結果作為集合 for /f "skip=2 tokens=1,* delims=/" %%i in ('net start') do echo %%i %%j ::("asc/2ap/as5")表示對字串進行處理 for /f "tokens=2,* delims=/" %%i in ("asc/2ap/as5") do echo %%i--%%j ::eol引數直接忽略以#開頭的行 for /f "eol=# tokens=*" %%i in (d:test.txt) do echo %%i
@echo off ::關閉/啟動MySQL服務,執行該條語句後會立即執行之後的程式碼,不會等待停止/啟動的過程 sc stop MySQL sc start MySQL ::設定MySQL服務為自啟動,demand手動,disabled禁用 sc config MySQL start= auto ::安裝服務 sc create MySQL binPath= "F:installFilesmysql-5.7.1.exe" ::解除安裝服務(解除安裝前先關閉服務) sc delete MySQL ::關閉/啟動MySQL服務,等待停止/啟動的過程,完成後執行之後的程式碼 net start MySQL net stop MySQL ::檢視所有執行的服務 net start
@echo off ping 192.168.0.225 ::無休止ping某地址 ping www.baidu.com -t
::可以呼叫vb指令碼和js指令碼 mshta vbscript:window.execScript("alert('hello world!');","javascript")(window.close) mshta javascript:window.execScript("msgBox('hello world!')(window.close)","vbs") mshta vbscript:msgbox("彈窗單行顯示內容",65,"彈窗的標題")(window.close) mshta vbscript:CreateObject("Wscript.Shell").popup("彈窗內容",7,"標題",64)(window.close) ::連續彈二個資訊框 mshta vbscript:execute("msgbox ""one BOX"":msgbox ""two BOX"":window.close")
@echo off set a=1 set b= if defined a if defined b echo 都搞定了,按任意鍵就可以撤了!&pause>nul &exit echo 我去!還有沒賦值的? pause
@echo off ::格式化A盤---請謹慎操作,一般莫搞騷操作 format a: ::用以判斷上一條命令是否執行成功,預設為0,出錯為1 echo %errorlevel% ::這個很好理解 就是判斷errorlevel為0 if %errorlevel% == 0 echo 搞定 ::下面相當於判斷errorlevel大於等於0 等同於%errorlevel% GEQ 0 if errorlevel 0 echo 搞定 ::下面相當於判斷errorlevel大於等於0且小於1 等同於%errorlevel% == 0 if errorlevel 0 if not errorlevel 1 echo 0 pause
子程式exit退出時可用exit /b num來指定返回碼,主程式用errorlevel可以接受到該返回碼
@echo off echo this is test.bat echo %errorlevel% call test1.bat echo %errorlevel% pause
@echo off echo this is test1.bat echo 按任意鍵結束test1.bat!&pause>nul &exit /b 123
到此這篇關於bat指令碼常用命令及親測範例程式碼超詳細講解的文章就介紹到這了,更多相關bat指令碼命令內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45