外匯網(wǎng)站怎么做優(yōu)外匯網(wǎng)站怎么樣推廣自己的公司
目錄
一、第一個批處理文件
1. &&和 | |
2. | 和 &
二、變量?
1.傳參變量%name?
2.初始化變量set命令
?3.變量的使用
4.局部變量與全局變量?
?5.使用環(huán)境變量
6.擴充變量語法?
三、注釋REM和 ::
四:函數(shù)
1.定義函數(shù)
2.調(diào)用函數(shù)(傳參)
3.帶返回值的函數(shù)
五、運算符
1.算術運算符
2.關系運算符
3.邏輯運算符
六、IF-ELSE條件判斷語句
七、循環(huán)語句
1.遍歷內(nèi)容(for /f 用法)
案例:輸出文本內(nèi)容
2.計數(shù)循環(huán)(for /l)
八、文件操作
1.創(chuàng)建新文件(輸出)?>?
2.追加寫入文件 >>
九、注冊表
1.查看注冊表信息
2.添加注冊表信息
3.刪除注冊表信息
十、輸入/輸出
1.靜默處理
十一、網(wǎng)絡
參考資料:
????????批處理腳本是以.bat結尾,寫在記事本的腳本代碼。?這種類型的文件通過稱為命令解釋器的系統(tǒng)文件提供的接口(有時稱為 shell)來識別和執(zhí)行。 在 Windows 系統(tǒng)上,此解釋器稱為 cmd.exe。
? ? ? ? 常用命令匯總:Windows:DOS命令-BAT批處理學習_dos命令做bat-CSDN博客
一、第一個批處理文件
@echo off
Rem This is for listing down all the files in the directory Program files
dir "C:\Program Files" > C:\lists.txt
echo "The program has completed"
? ? ? ? 每個命令占一行,一行使用多個命令需要用&符號連接。
????????第一個命令的目的是關閉該顯示。 命令"echo off"關閉整個腳本的顯示,"echo off"命令本身除外。 前面的"at"符號"@"使該命令也適用于其自身。
1. &&和 | |
語法:&&
command1 && command2 && command3 ...
只有左邊的命令被執(zhí)行且返回1,才會執(zhí)行右邊的命令 。
語法:| |
command1 || command2
?????????只有左邊的命令被執(zhí)行且返回0,才會執(zhí)行右邊的命令 ,也就是說如果左邊的命令沒執(zhí)行成功才會執(zhí)行右邊的命令。?
2. | 和 &
語法: 管道符 |
dir | find "cache"
把左邊的輸出內(nèi)容,作為右邊的輸入。
語法: 順序執(zhí)行&
command1 & command2 & command3 ...
順序執(zhí)行多條命令,不管命令是否執(zhí)行成功,可以用來連接命令。
二、變量?
????????批處理文件中有兩種類型的變量。 一種是調(diào)用批處理文件時可以傳遞的參數(shù)(以%開頭進行聲明),另一種是通過set命令完成的。
1.傳參變量%name?
? ? ? ? 變量需要通過傳參才能賦值使用,一次傳參后面也可以使用,值是被寫入內(nèi)存,可以復用。這種變量是采用%開頭+變量名,變量名需要符合一定的規(guī)范,不能是關鍵字或已定義的系統(tǒng)環(huán)境變量,比如IF、FOR、ERRORLEVEL等。
@echo off echo %1 %2 %3 pause
2.初始化變量set命令
? 用于設定初始化變量,不能通過傳參賦值的變量。
set /A variable-name=value
variable-name:是您要設置的變量的名稱。
value:?是需要針對變量設置的值。
/A :?如果值本質(zhì)上是數(shù)字,則必須使用此開關。
?3.變量的使用
? ? ? ? 使用變量需要將變量用兩個%括起來,注意單個左百分號表示傳參變量。以下為具體案例。
@echo off SET /A a = 5 SET /A b = 10 SET /A c = %a% + %b% echo %c%
4.局部變量與全局變量?
?????????默認情況下,變量對于整個命令提示符會話是全局的。 調(diào)用 SETLOCAL 命令使變量成為腳本范圍的本地變量。 調(diào)用 SETLOCAL 后,任何變量分配都會在調(diào)用 ENDLOCAL、調(diào)用 EXIT 或執(zhí)行到腳本中的文件末尾 (EOF) 時恢復。
?案例:
@echo off
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL
關于上述程序需要注意的一些關鍵事項。
-
"globalvar"是在全局范圍內(nèi)定義的,并且在整個腳本中都可用。
-
"var"變量是在本地范圍內(nèi)定義的,因為它包含在"SETLOCAL"和"ENDLOCAL"塊之間。 因此,一旦執(zhí)行"ENDLOCAL"語句,該變量就會被銷毀。
?5.使用環(huán)境變量
Desktop是自定義環(huán)境變量。?
6.擴充變量語法?
????????對于%~dp0第一次見,把它誤認為函數(shù)的傳參變量,后面才發(fā)現(xiàn)其實并不是函數(shù)里使用的。%0代表本身,在全局使用,則代表整個批處理文件,而在函數(shù)里,%0代表函數(shù)名。
????????~是擴展的意思,相當于把一個相對路徑轉換絕對路徑
????????%0代指批處理文件自身
????????%1表示批處理文件命令行接收到的第一個參數(shù),%2表示第二個,以此類推
????????%~d0 是指批處理所在的盤符,其中d代表drive
????????%~p0 是指批處理所在的目錄,其中p代表path
????????%~dp0 是批處理所在的盤符加路徑
案例:
echo %~dp0
pause
運行結果
選項 | 解釋 |
---|---|
%~0 | 文件本身 |
%~d0 | 文件所在驅動號 |
%~p0 | 文件所在路徑(僅路徑,少了驅動器號) |
%~n0 | 文件名 |
%~x0 | 文件拓展名 |
%~s0 | 用~省略的部分路徑 |
%~a0 | 文件屬性 |
%~t0 | 文件日期 |
%~z0 | 文件大小 |
可組合使用,就比如%~dp0。
三、注釋REM和 ::
????????注釋方法有兩種,一種 是REM的注釋方法,一種是兩個分號 :?: 的注釋方法,::注釋的方法更為推薦,執(zhí)行速度更快。
四:函數(shù)
1.定義函數(shù)
語法:
以單分號開頭的,同一個文件里可以不使用EXIT,結束標志以回車空行做分界線。
:function_name
Do_something
EXIT /B 0
::/B可以在退出時,不顯示信息,輸出更加整潔
案例:
@echo off
echo %1 %2 %3
echo %2%
call :eejdjdjdj
pause:eejdjdjdjecho helloecho wwwww
2.調(diào)用函數(shù)(傳參)
語法:
????????想要其能夠傳參到函數(shù)內(nèi)部,就需要使用傳參變量%~+參數(shù)位置編號,這是給函數(shù)傳參的變量,需要和前面的傳參變量作出區(qū)別。
Call :function_name parameter1, parameter2… parametern
案例 :
@echo off
SETLOCAL
CALL :Display 5 , 10
EXIT /B %ERRORLEVEL%
:Display
echo The value of parameter 1 is %~1
echo The value of parameter 2 is %~2
3.帶返回值的函數(shù)
語法:
????????使用 set 命令和波形符 (~) 字符以及參數(shù)的位置編號在函數(shù)中設置返回值,將返回值賦值給value1, value2… valuen。
Call :function_name value1, value2… valuen
案例 :
@echo off
SETLOCAL
CALL :SetValue value1,value2
echo %value1%
echo %value2%:SetValue
set "%~1 = 5"
set "%~2 = 10"
五、運算符
1.算術運算符
2.關系運算符
3.邏輯運算符
六、IF-ELSE條件判斷語句
注意: ELSE分別和兩個括號需要有空格,GTR也要有空格。
示例:
@echo off
set /A a=1
set /A b=1
echo %a%
IF (%a% GTR %b%) (echo yes
) else (echo no
)
pause
七、循環(huán)語句
語法:
????????在cmd窗口中,for之后的形式變量I必須使用單百分號引用,即%i;而在批處理文件中,引用形式變量i必須使用雙百分號,即%%i。
FOR %%variable IN (set) DO ( command [command-parameters] )
@echo off
set list=1 2 3 4
(for %%a in (%list%) do ( echo %%a
))
案例:
@echo off
for /f "delims=," %%i in (test.txt) do echo %%i
pause
@echo off
for %%I in (bbs.bathome.net) do echo %%I
pause
1.遍歷內(nèi)容(for /f 用法)
for /f 用法具有多種形式:
? ? ?1、for /f %%i in (文件名) do (……)
?????2、for /f %%i in ('命令語句') do (……)
?????3、for /f %%i in ("字符串") do (……)
?????4、for /f "usebackq" %%i in ("文件名") do (……)
? ? ?5、for /f "usebackq" %%i in (`命令語句`) do (……)
? ? ?6、for /f "usebackq" %%i in ('字符串') do (……)?????總而言之,沒使用增強型參數(shù)usebackq文件不需要符號括起來,字符串要雙引號,命令要單引號。如果使用則文件名需要雙引號括起來,命令需要反引號,而字符串需要單引號。增強型參數(shù)的作用是處理文件名內(nèi)含有特殊符號的情況。
案例:輸出文本內(nèi)容
@echo off
for /f %%i in (test.txt) do echo %%i
pause
案例:?切分字符串delims=和定點提取tokens=
????????切分delims=等號后面為分界符,定點選取tokens=等號后面為數(shù)字(可選取多個數(shù)字),代表第幾個字段(由delims切割的)
單個 :
@echo off
for /f "delims=, token=1" %%i in (hello.txt) do echo %%i
pause
?多個:
????????如果 tokens= 后面指定了多個數(shù)字,如果形式變量為%%i,那么,第一個數(shù)字指代的內(nèi)容用第一個形式變量%%i來接收,第二個數(shù)字指代的內(nèi)容用第二個形式變量%%j來接收,第三個數(shù)字指代的內(nèi)容用第三個形式變量%%k來接收……第N個數(shù)字指代的內(nèi)容用第N個形式變量來接收,其中,形式變量遵循字母的排序,第N個形式變量具體是什么符號,由第一個形式變量來決定:如果第一個形式變量是%%i,那么,第二個形式變量就是%%j;如果第一個形式變量用的是%%x,那么,第二個 形式變量就是%%y。
@echo off
for /f "delims=, tokens=2,5" %%i in (test.txt) do echo %%i %%j
pause
案例:跳行 skip=n
n表示跳過n行
@echo off
for /f "skip=2" %%i in (test.txt) do echo %%i
pause
?案例:忽略以指定字符打頭的行eol=
等號后面只能接一個字符
@echo off
for /f "eol=;" %%i in (test.txt) do echo %%i
pause
2.計數(shù)循環(huán)(for /l)
語法:
for /l %%i in (x,y,z) do (……)
????????在這個語句中,x、y和z都只能取整數(shù),正負皆可,x指代起始值,y指代步長,z為終止值,具體含義為:從x開始計數(shù),以y為步長,直至最接近 z的那個整數(shù)值為止,這之間有多少個數(shù),do后的語句就執(zhí)行多少次。?
八、文件操作
1.創(chuàng)建新文件(輸出)?>?
> 符號的作用是存在即覆蓋,不存在即新建,也可以>NUL來丟棄命令的輸出。
IF NOT EXIST "%ProgramW6432%" (ECHO 此為64位版 &PING 127.1 /n 2 >NUL&EXIT)
2.追加寫入文件 >>
>> 符號的作用是存在即行末追加寫入,不存在即新建。
案例:?
@echo offecho %1 %2 %3 > h.txt
echo %2% >>helle.txt
call :eejdjdjdj
pause:eejdjdjdjecho hello >>helle.txtecho wwwww
九、注冊表
1.查看注冊表信息
語法一:查詢所有的子項和值
reg query "HKCU\Software\SweetScape\010 Editor" /s
語法二:根據(jù)項值名稱進行查詢
REG QUERY KeyName /v /f Data
- /v :指定要搜索的值名稱。
- /f : 指定搜索數(shù)據(jù)的模式。
- Data:可用正則表達式進行字符串匹配。?
案例:
reg query "HKCU\Software\SweetScape\010 Editor" /v /f W*
語法三:根據(jù)項值的數(shù)據(jù)類型進行查詢
REG QUERY KeyName /t Type
???/ t 指定要查詢的類型,它后面跟的值必須是下面的其中之一:
- REG_SZ
- REG_MULTI_SZ
- REG_DWORD_BIG_ENDIAN
- REG_DWORD
- REG_BINARY
- REG_DWORD_LITTLE_ENDIAN
- REG_LINK
- REG_FULL_RESOURCE_DESCRIPTOR
- REG_EXPAND_SZ
案例:
reg query "HKCU\Software\SweetScape\010 Editor" /t REG_SZ
語法四:根據(jù)項值的數(shù)據(jù)進行查詢
REG QUERY KeyName /d /f Data
- /d :指定要搜索的數(shù)據(jù)內(nèi)容(項值的數(shù)據(jù))。
- /f : 指定搜索數(shù)據(jù)的模式。
- Data:可用正則表達式進行字符串匹配。??
2.添加注冊表信息
語法:
reg add <keyname> [/v valuename | /ve] [/t datatype] [/d data] [/f]
與查詢其實差不多,選項信息如下:
- /v : 添加項值的名稱
- / t : 添加項值的類型
- /d : 添加項值的數(shù)據(jù)
- / f : 在不提示確認的情況下添加項值
案例:要將名為 DATA 的值、類型為 REG_BINARY 且數(shù)據(jù)為 fe340ead 的注冊表項添加到 HKLM\Software\MyCo
reg add HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead
案例:要將名為 Path、類型為 REG_EXPAND_SZ 且數(shù)據(jù)為 %systemroot% 的擴展注冊表項添加到 HKLM\Software\MyCo?
reg add HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d ^%systemroot^%
對于 REG_EXPAND_SZ 項類型,請在 /d 參數(shù)內(nèi)將插入符號 (^) 與?%?結合使用。
3.刪除注冊表信息
語法:
reg delete <keyname> [/v valuename] [/f]
????????有選用/v表示是根據(jù)項值的名稱刪除項值,沒有選用表示刪除的是項,而/f 的作用就是靜默處理,不提示確認的情況直接刪除。
案例:刪除名為 ZODIAC 的計算機上 HKLM\Software\MyCo 下的注冊表值 MTU
reg delete \\ZODIAC\HKLM\Software\MyCo /v MTU
案例:要刪除注冊表項 Timeout 及其所有子項和值
reg delete HKLM\Software\MyCo\MyApp\Timeout
十、輸入/輸出
????????鍵盤輸入、在屏幕上打印文本以及在屏幕上打印錯誤共有三個通用"文件"。 "標準輸入"文件,稱為?stdin,包含程序/腳本的輸入。 "標準輸出"文件,稱為stdout,用于寫入輸出以在屏幕上顯示。 "標準錯誤"文件,稱為?stderr,其包含要在屏幕上顯示的所有錯誤消息。
????????這三個標準文件中的每一個(也稱為標準流)均使用數(shù)字 0、1 和 2 進行引用。Stdin 是文件 0,stdout 是文件 1,stderr 是文件 2。
1.靜默處理
REG QUERY "HKU\S-1-5-19">NUL 2>&1
????????REG QUERY "HKU\S-1-5-19">NUL這句話是將標準輸出流1的輸出數(shù)據(jù)進行丟棄,而?2>&1是將標準錯誤流重定向到標準輸出流的地址,目的為了將兩個流合并,從而實現(xiàn)一起丟棄,實現(xiàn)靜默化處理。
十一、網(wǎng)絡
參考資料:
批處理腳本教程 (w3ccoo.com)
reg add | Microsoft Learn
DOS批處理中%~dp0等擴充變量語法詳解 - NAVYSUMMER - 博客園 (cnblogs.com)