人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

bat腳本常用命令及親測示例代碼超詳細(xì)講解

發(fā)布日期:2022-07-15 19:04 | 文章來源:源碼中國

【內(nèi)容】:

注意:編輯bat文件請使用ANSI編碼(不然會出現(xiàn)中文亂碼)

1、語句注釋

rem命令行注釋,可以回顯(語句會在命令行中顯示);

::兩個冒號,效果同上,但不會回顯。(冒號后加任意非字母數(shù)字字符都可起到注釋作用)

2、暫停

pause暫停,命令行中出現(xiàn)"請按任意鍵繼續(xù)..."

自定義暫停時的文本,如下:

::pause>nul,隱藏原暫停文本
echo 這里是自定義文本! & pause > nul

3、輸出和換行

echo后加內(nèi)容即輸出該內(nèi)容,如:echo "welcome!";

echo.換行命令,即echo后加一個點

4、開啟關(guān)閉回顯

@置于語句前則該條語句不會回顯(無視echo on)

echo off關(guān)閉回顯功能,直到出現(xiàn)echo on,但其本身會回顯,故其之前往往和@一起使用,即@echo off(關(guān)閉所有回顯功能)

5、新建文件、增加文件內(nèi)容

@echo off
rem 格式:echo 文件內(nèi)容>文件路徑
echo @echo off>test1.bat
::其中>>在文末添加,>覆蓋原內(nèi)容
echo echo this is test>>test1.bat
echo pause>>test1.bat
rem 顯示該文件內(nèi)容
type test1.bat
pause

6、設(shè)置標(biāo)題title

@echo off
::title設(shè)置標(biāo)題
title 我測試一下!
pause

7、設(shè)置顏色

例:color 0A

8、if語句判斷

特別特別注意:if語句塊在執(zhí)行時是當(dāng)做一條語句加載的,故需要通過11中的延遲賦值來解決其內(nèi)部變量引用的問題

::if常規(guī)用法,注意空格
@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

如上的操作數(shù)可以是字符串、數(shù)值、變量;當(dāng)參與比較的字符串是字符串時,將被轉(zhuǎn)換為對于的ASCII碼進行比較;比較運算符有如下:

if語句中的'與'、'或'、'非'邏輯判斷

::'與'一般用if嵌套實現(xiàn)
@echo off
set /p a=
::當(dāng)a小于10且大于0
if %a% lss 10 if %a% gtr 0 echo 輸入的是0-10
pause
::'非'用not可以實現(xiàn)
@echo off
set /p a=
::a不小于10
if not %a% lss 10 ( echo 輸入的是不小于10 )
pause
::'或'實現(xiàn)一:使用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
::'或'實現(xiàn)二:使用額外變量標(biāo)記結(jié)果,再判斷該變量(邏輯簡單但代碼多)
@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

9、goto語句跳轉(zhuǎn)

@echo off
::使用冒號加標(biāo)記名作為goto語句的標(biāo)記
:start
set /p param=
if %param%==4 (echo 請不要輸入4! & goto start) else (echo %param%)
pause

10、set用法之接收用戶輸入數(shù)據(jù)

@echo off
set /p param=請輸入密碼:
echo %param%
pause

11、set用法之定義變量和延遲賦值

請?zhí)貏e注意這個機制,真的是特別惡心

::輸出為1
@echo off
set a=1
set a=2&echo %a%
pause

注意:批處理在運行“set a=2&echo %a%”之前,會先把這一句整句讀取并做了預(yù)處理,即對變量a賦了值,那么%a%值為1,為解決該問題,批處理設(shè)計了變量延遲。也就是說,在讀取了一條完整的語句之后,不立即對該行的變量賦值,而會在某個單條語句執(zhí)行之前再進行賦值,具體實現(xiàn)如下:

::輸出為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

12、set用法之系統(tǒng)變量

@echo off
::查看所有環(huán)境變量
echo ----------------ALL----------------------
set
echo ----------------END----------------------
::查看環(huán)境變量JAVA_HOME的值
if defined JAVA_HOME ( echo JAVA_HOME:%JAVA_HOME% ) else ( echo 未定義JAVA_HOME )
pause

13、set用法之定義數(shù)字表達式

@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

14、for語句循環(huán)

@echo off
::關(guān)鍵字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 當(dāng)前硬盤的分區(qū)有:
for %%i in (%str%) do if exist %%i: echo %%i:
pause
@echo off
::找出當(dāng)前目錄下文件名為四個字符的txt文件
for %%i in (????.txt) do echo "%%i"
pause

15、變量%0--%9

%0指該文件本身,%1--%9為接收到的參數(shù),如下例子中子程序的%1即為主程序傳輸?shù)膒aram1,%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 這是接收到的第一個參數(shù)%1 和第二個參數(shù)%2
pause
@echo off
set /p param=
if %param%==4 (echo 請不要輸入4!) else (echo %param%)
::%0在當(dāng)前窗口重新調(diào)用自身
%0

16、切換目錄

::@echo off
::顯示當(dāng)前目錄
cd
::切換到根目錄
cd\
::盤符加冒號,切換到該盤
d:
::切換到e:hi目錄下(目錄名不區(qū)分大小寫)
cd /d e:\hi
::保存當(dāng)前目錄,并切換當(dāng)前目錄為d:\test
pushd d:\test
::恢復(fù)當(dāng)前目錄為剛才保存的e:\hi
popd
pause

17、md命令創(chuàng)建文件夾

::創(chuàng)建文件夾
md e:\test\test1
::文件夾名有空格需要加引號
md "e:\test op"
::空格隔開,創(chuàng)建多個
md e:\test1 e:\test9\test2 "e:\test5 lmn"

18、rd命令刪除文件夾

@echo off
::刪除e:\test op下空文件夾,不為空不能刪除
rd "e:\test op"
::刪除e:\test9下所有文件夾,不管是否為空,但會詢問是否確認(rèn)刪除[Y/N]
rd /s e:\test9
::自定義刪除提示信息
echo 是否刪除[Y/N]: & rd /s e:\test9>nul
::/s/q聯(lián)合使用,不會詢問直接刪除
rd /s/q e:\test9

19、move命令移動文件(夾)

@echo off
::文件夾移動,如果test文件夾存在,則將test5文件夾移動到test文件夾下
::如果test文件夾不存在,則將test5文件夾移動到test1文件夾下并重命名為test
::注意:文件夾移動不能跨分區(qū)
move e:\test5 e:\test1\test
::將d:\test\1.txt文件移動到e:\下并重命名為23.txt
::如果該目錄已存在23.txt,則會覆蓋
move d:\test\1.txt e:\23.txt>nul&&echo 移動成功并重命名
::將e:\23.txt文件移動到e:\test文件夾下
move e:\23.txt e:\test>nul&&echo 移動到文件夾下

20、del命令刪除文件

@echo off
::刪除該層目錄下的所有文件,需要確認(rèn)[Y/N]
del d:\test
pause
::不需要確認(rèn)
del /q d:\test
::刪除該目錄下所有層級的文件,不刪除文件夾,需要逐個文件夾確認(rèn)
del /s d:\test
::刪除文件111.png,不需要確認(rèn)
del d:\test\111.png

21、cope命令復(fù)制文件

@echo off
::將d:\test\test.txt復(fù)制到e:\test1\目錄下并重命名為test2.txt
::如果test2.txt文件已存在,將自動覆蓋
copy d:\test\test.txt e:\test1\test2.txt
::將e:\test該層目錄下所有文件復(fù)制到d:\test1\test3文件夾下
::前提d:\test1\test3文件夾必須已存在
::相同文件名的文件會被覆蓋
copy e:\test d:\test1\test3

22、xcope命令復(fù)制文件

@echo off
::將e:\test目錄下所有文件(夾)復(fù)制到d:\test1
::/e目錄下所有文件(夾),/y已存在時直接覆蓋
xcopy e:\test d:\test1 /e/y

23、cope命令合并文件

@echo off
cd /d d:\test
::將129.txt和156.txt兩個文件內(nèi)容合并存入新建的new.txt中
copy 129.txt+156.txt new.txt
::打印出new.txt中的內(nèi)容
type new.txt
::將d:\mp3\111.mp3和e:\2.mp3以二進制數(shù)據(jù)合并復(fù)制到d:\new.mp3
::其中/b二進制,/a文本形式
copy /b d:\mp3\111.mp3+e:\2.mp3 d:\new.mp3

24、ren命令重命名文件(夾)

@echo off
::將1.txt重命名為58.bat
ren d:\test\1.txt 58.bat
::將d:\test\目錄下所有文件名為1開頭的txt文件改為bat文件
ren d:\test\1*.txt *.bat
::將d:\test\目錄下所有文件名為1開頭三個字符的bat改為txt文件
ren d:\test\1??.bat ???.txt

25、call使用

在程序中調(diào)用子腳本,在當(dāng)前程序中運行子腳本代碼,子腳本執(zhí)行完后繼續(xù)執(zhí)行本程序之后的代碼

::該文件名為test.bat
@echo off
echo 這是主程序第一個輸出
timeout 2
call test1.bat param1 param2
timeout 2
echo 這是主程序第二個輸出
pause
::該文件名為test1.bat
@echo off
timeout 1
echo 這是子程序第一個輸出
echo 這是接收到的第一個參數(shù)%1 和第二個參數(shù)%2
pause

26、timeout延遲

@echo off
set a=1
:start
echo %a%&set /a a=a+1
timeout 1 > nul
goto start
pause
@echo off
::每隔一秒輸出斐波拉契數(shù)列
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

27、start命令

注意:執(zhí)行start時將開啟一個新線程來執(zhí)行該程序,原程序不受影響繼續(xù)執(zhí)行

@echo off
::打開test.txt文件
start e:\test.txt
::啟動jar包
start java -jar e:\demo.jar
pause

啟動一個新的cmd窗口并在其內(nèi)執(zhí)行命令

https://www.jb51.net/article/245248.htm

28、調(diào)用彈框

::一、MSG命令方式
@echo off
::/time:5設(shè)置時間彈框的顯示時間為5S,5S后自動關(guān)閉
msg * /time:5 這里是彈窗顯示的文本
pause
::設(shè)置彈窗的多行文本
(echo 這是彈窗的第一行文本
echo 這是第二行文本)|msg * /time:5
pause
::一、調(diào)用VBScript的MsgBox實現(xiàn)彈窗
@echo off
::第二個參數(shù)65的解釋在代碼之后的列表中
mshta vbscript:msgbox("彈窗單行顯示內(nèi)容",65,"彈窗的標(biāo)題")(window.close)
::多行顯示文本可在文本中使用vbCrLf或vbNewLine
set msg="多行顯示vbCrLf這是第二行vbNewLine這是第三行"
mshta vbscript:msgbox(Replace(Replace(%msg%,"vbCrLf",vbCrLf),"vbNewLine",vbNewLine),6,"自定義標(biāo)題")(window.close)

MsgBox的button參數(shù)取值如下:

0 = vbOKOnly - 只顯示確定按鈕。
1 = vbOKCancel - 顯示確定和取消按鈕。
2 = vbAbortRetryIgnore - 顯示放棄、重試和忽略按鈕。
3 = vbYesNoCancel - 顯示是、否和取消按鈕。
4 = vbYesNo - 顯示是和否按鈕。
5 = vbRetryCancel - 顯示重試和取消按鈕。
16 = vbCritical - 顯示臨界信息圖標(biāo)。
32 = vbQuestion - 顯示警告查詢圖標(biāo)。
48 = vbExclamation - 顯示警告消息圖標(biāo)。
64 = vbInformation - 顯示信息消息圖標(biāo)。
0 = vbDefaultButton1 - 第一個按鈕為默認(rèn)按鈕。
256 = vbDefaultButton2 - 第二個按鈕為默認(rèn)按鈕。
512 = vbDefaultButton3 - 第三個按鈕為默認(rèn)按鈕。
768 = vbDefaultButton4 - 第四個按鈕為默認(rèn)按鈕。
0 = vbApplicationModal - 應(yīng)用程序模式:用戶必須響應(yīng)消息框才能繼續(xù)在當(dāng)前應(yīng)用程序中工作。
4096 = vbSystemModal - 系統(tǒng)模式:在用戶響應(yīng)消息框前,所有應(yīng)用程序都被掛起。

注意:第一組值 (0 - 5) 用于描述對話框中顯示的按鈕類型與數(shù)目;第二組值 (16, 32, 48, 64) 用于描述圖標(biāo)的樣式;第三組值 (0, 256, 512) 用于確定默認(rèn)按鈕;而第四組值 (0, 4096) 則決定消息框的樣式。在將這些數(shù)字相加以生成 buttons 參數(shù)值時,只能從每組值中取用一個數(shù)字。

29、獲得管理員權(quán)限

可嘗試以下兩種方式

@ 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
::上面這段代碼之后執(zhí)行的所有東西都是管理員權(quán)限方式
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
	echo 請求管理員權(quán)限...
	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 獲得管理員權(quán)限
pause

30、for語句讀取文件內(nèi)容

@echo off
::按行讀取d:\test.txt文件中的內(nèi)容,輸出每行的第一個數(shù)據(jù),默認(rèn)每行內(nèi)以空格和tab為分隔符
for /f %%i in (d:\test.txt) do echo %%i
::delims參數(shù)指定分隔符為/
for /f "delims=/" %%i in (d:\test.txt) do echo %%i
::tokens參數(shù)指定讀取第二列,tokens=*讀取所有
for /f "tokens=2 delims=/" %%i in (d:\test.txt) do echo %%i
::skip參數(shù)直接跳過前兩行,從第三行開始
::tokens=2,*讀取第二個和之后剩余所有,%%i為第一列值,%%j為之后剩余所有
::tokens=1,4讀取第一個和第四個,%%i為第一列值,%%j為第四列值
::('net start')表示將單引號內(nèi)語句的執(zhí)行結(jié)果作為集合
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參數(shù)直接忽略以#開頭的行
for /f "eol=# tokens=*" %%i in (d:\test.txt) do echo %%i

31、sc和net命令

@echo off
::關(guān)閉/啟動MySQL服務(wù),執(zhí)行該條語句后會立即執(zhí)行之后的代碼,不會等待停止/啟動的過程
sc stop MySQL
sc start MySQL
::設(shè)置MySQL服務(wù)為自啟動,demand手動,disabled禁用
sc config MySQL start= auto
::安裝服務(wù)
sc create MySQL binPath= "F:\installFiles\mysql-5.7.1.exe"
::卸載服務(wù)(卸載前先關(guān)閉服務(wù))
sc delete MySQL
::關(guān)閉/啟動MySQL服務(wù),等待停止/啟動的過程,完成后執(zhí)行之后的代碼
net start MySQL
net stop MySQL
::查看所有運行的服務(wù)
net start

32、ping命令

@echo off
ping 192.168.0.225
::無休止ping某地址
ping www.baidu.com -t

33、mshta命令

::可以調(diào)用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("彈窗單行顯示內(nèi)容",65,"彈窗的標(biāo)題")(window.close)
mshta vbscript:CreateObject("Wscript.Shell").popup("彈窗內(nèi)容",7,"標(biāo)題",64)(window.close)
::連續(xù)彈二個信息框
mshta vbscript:execute("msgbox ""one BOX"":msgbox ""two BOX"":window.close")

34、exit退出腳本和查看返回碼errorlevel

@echo off
set a=1
set b=
if defined a if defined b echo 都搞定了,按任意鍵就可以撤了!&pause>nul &exit
echo 我去!還有沒賦值的?
pause
@echo off
::格式化A盤---請謹(jǐn)慎操作,一般莫搞騷操作
format a:
::用以判斷上一條命令是否執(zhí)行成功,默認(rèn)為0,出錯為1
echo %errorlevel%
::這個很好理解 就是判斷errorlevel為0
if %errorlevel% == 0 echo 搞定
::下面相當(dāng)于判斷errorlevel大于等于0 等同于%errorlevel% GEQ 0 
if errorlevel 0 echo 搞定
::下面相當(dāng)于判斷errorlevel大于等于0且小于1 等同于%errorlevel% == 0
if errorlevel 0 if not errorlevel 1 echo 0
pause

子程序exit退出時可用exit /bnum來指定返回碼,主程序用errorlevel可以接受到該返回碼

@echo off
echo this is test.bat
echo %errorlevel%
call test1.bat
echo %errorlevel%
pause
@echo off
echo this is test1.bat
echo 按任意鍵結(jié)束test1.bat!&pause>nul &exit /b 123

  • 腳本請使用ANSI編碼
  • 很多操作需要管理員權(quán)限,所以注意使用管理員權(quán)限執(zhí)行腳本
  • if語句一次性加載真的很惡心,變量賦值注意延遲加載
  • 字符串中避免使用特殊字符小括號
  • 環(huán)境變量設(shè)置完成后在新窗口才可以查看,所以設(shè)置完了之后無法立馬查看,%0調(diào)用自身是在當(dāng)前窗口繼續(xù)執(zhí)行,也無法查看

到此這篇關(guān)于bat腳本常用命令及親測示例代碼超詳細(xì)講解的文章就介紹到這了,更多相關(guān)bat腳本命令內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

美國服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部