免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
批處理總結
預定義的變量
下面是些已經被底層定義好可以直接使用的變量:不會出現在 SET 顯示的變量列表中
%CD% - 擴展到當前目錄字符串。
%DATE% - 用跟 DATE 命令同樣的格式擴展到當前日期。
%TIME% - 用跟 TIME 命令同樣的格式擴展到當前時間。
%RANDOM% - 擴展到 0 和 32767 之間的任意十進制數字。
%ERRORLEVEL% - 擴展到當前 ERRORLEVEL 數值。
%CMDEXTVERSION% - 擴展到當前命令處理器擴展名版本號。
%CMDCMDLINE% - 擴展到調用命令處理器的原始命令行。
%0 bat的完整路徑名如"C:\Windows\system32\xxx.bat"
%1 bat參數1依次類推%2參數2...
%path% - 當前的環(huán)境變量。以分號隔開的路徑列表,路徑可包含空格,可以以'\'結尾, 可以以雙引號包圍之。
參數%0具有特殊的功能,可以調用批處理自身,以達到批處理本身循環(huán)的目的,也可以復制文件自身等等。
例:最簡單的復制文件自身的方法
copy %0 d:\wind.bat
擴展變量
@ 與%i相關的變量(bat參數或者for循環(huán)的%i)
假設文件為C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
%0        C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
%~dp0  C:\Documents and Settings\jinsun\桌面\
%cd%   C:\Documents and Settings\jinsun\桌面
%~nx0   ParseSinglePkgs.bat
%~n0     ParseSinglePkgs
%~x0     .bat
@ 與%VAR%相關的變量
%VAR:str1=str2%   會將VAR中的str1替換為str2(str2如果為空則可以達到刪除的效果,str1前可以加*,變量%ABC:*B=%是C)
%VAR:~0,-2%          會提取VAR 變量的所有字符,除了最后兩個
%VAR:~2%              會提取VAR 變量的除前兩個的所有字符
%VAR:~-2%             會提取VAR 變量的最后兩個
%VAR:~2,5%           提取從第2個字符開始的5個字符
========================================================
在bat文件中,多個命令寫在一行或括號內,如果使用行內或括號內定義或修改的變量,需要啟用延遲變量擴充,用嘆號引用變量。
bat文件中用 setlocal enabledelayedexpansion 啟用延遲變量擴充,命令提示符窗口啟用延遲變量擴充,用 cmd /v:on
ren命令中的文件名最好加引號,防止文件名包含空格等特殊字符造成的錯誤。
cd /d %~dp0
批處理文件中的一條語句
意思是 更改當前目錄為批處理本身的目錄
比如你有個批處理a.bat在D:\qq文件夾下
a.bat內容為
cd /d %~dp0
在這里
cd /d 表示直接轉換到后面的路徑,否則如果切換盤符,就需要再輸入盤符才能切換路徑
cd /d %~dp0的意思就是cd /d d:\qq
%0代表批處理本身 d:\qq\a.bat
~dp是變量擴充
d既是擴充到分區(qū)號 d:
p就是擴充到路徑 \qq
dp就是擴充到分區(qū)號路徑 d:\qq
%0代指批處理文件自身
%~d0 是指批處理所在的盤符
%~dp0 是盤符加路徑
cd %~dp0 就是進入批處理所在目錄了
%cd%
%cd%代表當前執(zhí)行批處理文件的路徑(當前路徑)
echo %cd%
%CD%  當前文件目錄,不顯示文件名,切通過其找到其他文件
%0    當前文件本身,包含完整路徑名和文件名
如 "C:\Windows\system32\xxx.bat",是一個路徑字符串,有引號
*.*  代表所有文件
>和>>它們的作用都是改變各種提示信息的輸出方向,把提示信息輸出到指定的地方去——各種提示信息默認是輸出到屏幕上去的。
單個的>表示以覆蓋方式重定向提示信息,也就是說如果目的地原來有內容,將把原來的內容清除掉,用新內容填充;
>>表示以追加的方式重定向提示信息,也就是說,如果目的地原來有內容,原有的內容將保持不變,在原有內容之后追加新內容。
例如:假設d:\test.txt中的內容是:I Love batch。那么,在cmd窗口中,分別使用如下兩條語句:echo me,too>d:\test.txt和echo me,too>>d:\test.txt,將會發(fā)現,使用第一條語句之后,test.txt中只有一行內容:me,too,而使用第二條語句之后,test.txt中將有兩行內容,分別是I Love batch和me,too。
例如:tree /?>help.txt,這條命令語句就把 tree 命令的幫助信息重定向到了help.txt文件中,
help>nul 就把 help 命令的提示信息重定向到了空設備中去(nul表示空設備)。
|   命令管道符
格式:第一條命令 | 第二條命令 [| 第三條命令...]
將第一條命令的結果作為第二條命令的參數來使用,記得在unix中這種方式很常見。
例如:
dir c:\|find "txt"
以上命令是:查找C:\所有,并發(fā)現TXT字符串。
md
如果要創(chuàng)建的文件夾帶有空格或&,需要用引號把文件夾名括起來,例如:md "test abc"、md "abc&xyz"。
如果不使用引號,又會帶來什么后果呢?
1、如果文件夾名帶空格,那么,md test abc 語句會在當前目錄下創(chuàng)建test和abc這兩個文件夾;利用這個特點,如果要創(chuàng)建abc def xyz這三個文件夾,直接使用 md abc def xyz 就行了,而無需連寫三條md語句。
當然,md abc;def;xyz或者md abc,def,xyz 這樣的寫法也是可以的。
2、如果文件夾名中含有&,那么,md abc&xyz 會創(chuàng)建abc這個文件夾,并提示說:'xyz'不是內部或外部命令,也不是可運行的程序或批處理文件,這是因為,&是復合語句的連接符號,它把前后兩部分視為兩條子語句了。
忠告:如果文件夾名含有特殊符號,請不要忘記使用雙引號!
md創(chuàng)建中級目錄。也就是說,md a\b\c這樣的命令,可以在當前目錄下建立文件夾a,然后,在a下建立文件夾b,b之下再建立文件夾c
echo on/off
on 和 off 都是echo 的關鍵字,所謂關鍵字就是系統(tǒng)規(guī)定、有特殊用途的字符。
echo on 是打開回顯,echo off 是關閉回顯。
系統(tǒng)默認是echo on,所以每次為了關閉回顯,都會在代碼的行首加上echo off,加以關閉。
不關閉回顯,連執(zhí)行的命令符都會顯示出來,所以一般會關閉。
前面加上@又是為什么?
echo off只能關閉 echo off后面的代碼的回顯,但不能關閉自身的回顯。所以需要加上@關閉自身。
echo.
echo 后加一點表示換行,真奇葩的設計。
findstr默認是區(qū)分大小寫的(跟find命令一樣)
findstr /vm "^teststring" *.txt
findstr /v /m "teststring" *.txt
/i        不區(qū)分大小寫 (/ignore)
/V       只打印不包含匹配的行。
/M       如果文件含有匹配項,只打印其文件名。
啟動一個程序
call與start區(qū)別
start upload.bat
不會等upload.bat執(zhí)行完再執(zhí)行下一條, 如此可實現同時執(zhí)行多條命令.
call upload.bat
call 命令 是要等調用的程序結束以后才運行下面的命令.
特殊符號
&:第一條命令 & 第二條命令 [& 第三條命令...]
用這種方法可以同時執(zhí)行多條命令,而不管命令是否執(zhí)行成功。
&&:第一條命令 && 第二條命令 [&& 第三條命令...]
當碰到執(zhí)行出錯的命令后將不執(zhí)行后面的命令,如果一直沒有出錯則一直執(zhí)行完所有命令。
||:第一條命令 || 第二條命令 [|| 第三條命令...]
當碰到執(zhí)行正確的命令后將不執(zhí)行后面的命令,如果沒有出現正確的命令則一直執(zhí)行完所有命令;
========================================================
Sql代碼
 
@echo off
for /? > for.txt
set /? > set.txt
shift /? >shift.txt
exit
@echo off for /? > for.txt set /? > set.txt shift /? >shift.txt exit
執(zhí)行后在當前路徑下就生成for.txt、set.txt和shift.txt三個文件,里面分別記錄了for命令、set命令和shift命令的幫助信息。
1.Echo 命令
打開回顯或關閉請求回顯功能,或顯示消息。
如果沒有任何參數,echo 命令將顯示當前回顯設置。
語法
echo [{on|off}] [message]
Sample:
@echo off / echo hello world
在實際應用中我們會把這條命令和重定向符號(也稱為管道符號,一般用> >> ^)結合來實現輸入一些命令到特定格式的文件中.這將在以后的例子中體現出來。
2.@ 命令
表示不顯示@后面的命令
在入侵過程中(例如使用批處理來格式化敵人的硬盤)自然不能讓對方看到你使用的命令啦。
Sample:@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset (format 這個命令是不可以使用/y這個參數的,可喜的是微軟留了個autoset這個參數給我們,效果和/y是一樣的。)
3.Goto 命令
指定跳轉到標簽,找到標簽后,程序將處理從下一行開始的命令。
語法:goto label (label是參數,指定所要轉向的批處理程序中的行。)
Sample:
Ruby代碼
 
if {%1}=={} goto noparms
if {%2}=={} goto noparms(如果這里的if、%1、%2你不明白的話,先跳過去,后面會有詳細的解釋。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
if {%1}=={} goto noparmsif {%2}=={} goto noparms(如果這里的if、%1、%2你不明白的話,先跳過去,后面會有詳細的解釋。)@Rem check parameters if null show usage:noparmsecho Usage: monitor.bat ServerIP PortNumbergoto end
標簽的名字可以隨便起,但是最好是有意義的字母啦,字母前加個:用來表示這個字母是標簽,goto命令就是根據這個:來尋找下一步跳到到那里。最好有一些說明這樣你別人看起來才會理解你的意圖啊。
4.Rem 命令
注釋命令,在C語言中相當與/*--------*/,它并不會被執(zhí)行,只是起一個注釋的作用,便于別人閱讀和你自己日后修改。
Rem Message
Sample:
@Rem Here is the description.
注釋可以使用Rem,也可以使用雙冒號即::
5.Pause 命令
運行 Pause 命令時,將顯示下面的消息:
Press any key to continue . . .
Ruby代碼
 
@echo off
:begin
copy a:*.* d:\back
echo Please put a new disk into driver A
pause
goto begin
@echo off :begin copy a:*.* d:\backecho Please put a new disk into driver A pause goto begin
在這個例子中,驅動器 A 中磁盤上的所有文件均復制到d:\back中。顯示的注釋提示您將另一張磁盤放入驅動器 A 時,pause 命令會使程序掛起,以便您更換磁盤,然后按任意鍵繼續(xù)處理。
6.Call 命令
call命令用來從一個批處理腳本中調用另一個批處理腳本
如果在腳本或批處理文件外使用 Call,它將不會在命令行起作用。
語法
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
參數
[Drive:}[Path] FileName
指定要調用的批處理程序的位置和名稱。filename 參數必須具有 .bat 或 .cmd 擴展名。
Ruby代碼
 
call mvn clean
call mvn clean
7.start 命令
調用外部程序,所有的DOS命令和命令行程序都可以由start命令來調用。
入侵常用參數:
MIN 開始時窗口最小化
SEPARATE 在分開的空間內開始 16 位 Windows 程序
HIGH 在 HIGH 優(yōu)先級類別開始應用程序
REALTIME 在 REALTIME 優(yōu)先級類別開始應用程序
WAIT 啟動應用程序并等候它結束
parameters 這些為傳送到命令/程序的參數
執(zhí)行的應用程序是 32-位 GUI 應用程序時,CMD.EXE 不等應用程序終止就返回命令提示。如果在命令腳本內執(zhí)行,該新行為則不會發(fā)生。
8.choice 命令
choice 此命令可以讓用戶輸入一個字符,從而運行不同的命令。使用時應該加/c:參數,c:后應寫提示可輸入的字符,之間無空格。它的返回碼為1234……
如: choice /c:dme defrag,mem,end
將顯示
defrag,mem,end[D,M,E]?
Ruby代碼
 
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag (應先判斷數值最高的錯誤碼)
if errorlevel 2 goto mem
if errotlevel 1 goto end
:defrag
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye
@echo off choice /c:dme defrag,mem,end if errorlevel 3 goto defrag (應先判斷數值最高的錯誤碼)if errorlevel 2 goto mem if errotlevel 1 goto end :defrag c:\dos\defrag goto end :mem mem goto end :end echo good bye
此文件運行后,將顯示 defrag,mem,end[D,M,E]? 用戶可選擇d m e ,然后if語句將作出判斷,d表示執(zhí)行標號為defrag的程序段,m表示執(zhí)行標號為mem的程序段,e表示執(zhí)行標號為end的程序段,每個程序段最后都以goto end將程序跳到end標號處,然后程序將顯示good bye,文件結束。
9.If 命令
if 表示將判斷是否符合規(guī)定的條件,從而決定執(zhí)行不同的命令。 有三種格式:
1、if "參數" == "字符串"  待執(zhí)行的命令
檢測字符串
(注意,用if檢測字符串是否相等的時候,后面用的不是“=”,而是“==”)
參數如果等于指定的字符串,則條件成立,運行命令,否則運行下一句。(注意是兩個等號)
如if "%1"=="a" format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms
檢測數值:(注意,批處理中大于符號不能用:“>”,而用"gtr",其它的也類似)
比較運算符一覽:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
Sql代碼
 
@echo off
set /a num1=20
set /a num2=15
if %num1% gtr %num2% echo %num1%大于%num2%
if %num1% EQU %num2% echo %num1%等于%num2%
if %num1% LSS %num2% echo %num1%小于%num2%
pause>nul
@echo off set /a num1=20 set /a num2=15 if %num1% gtr %num2% echo %num1%大于%num2% if %num1% EQU %num2% echo %num1%等于%num2% if %num1% LSS %num2% echo %num1%小于%num2% pause>nul
2、if exist 文件名  待執(zhí)行的命令
如果有指定的文件,則條件成立,運行命令,否則運行下一句。
如if exist config.sys edit config.sys
3、if errorlevel / if not errorlevel 數字  待執(zhí)行的命令
如果返回碼等于指定的數字,則條件成立,運行命令,否則運行下一句。
說明:環(huán)境變量errorlevel的初始值為0,當一些命令執(zhí)行不成功,就會返回一個數值,如:1 ,2 等
如if errorlevel 2 goto x2
DOS程序運行時都會返回一個數字給DOS,稱為錯誤碼errorlevel或稱返回碼,常見的返回碼為0、1。
常用命令的返回值及其代表的意義
IF [NOT]  ERRORLEVEL number   do command
IF [NOT]  string1==string2   do command
IF [NOT]  EXIST filename   do command
10.for 命令
for 命令是一個比較復雜的命令,主要用于參數在指定的范圍內循環(huán)執(zhí)行命令。
在批處理文件中使用 FOR 命令時,指定變量請使用 %%variable
在批處理文件中使用 FOR 命令時,指定變量請使用 %%variable而不要用 %variable。變量名稱是區(qū)分大小寫的,所以 %i 不同于 %I
for /f %%i in (a.txt) do echo %%i
//這個會顯示a.txt里面的內容,因為/f的作用,會讀出a.txt中的內容。
for %%i in (a.txt) do echo %%i
//而這個只會顯示a.txt這個名字,并不會讀取其中的內容。
for %%a in (c:\*.*) do echo %%a
::顯示C盤根目錄下所有非隱藏、非系統(tǒng)屬性文件
::只顯示文件,不顯示文件夾
一、/d
(只搜索目錄,不搜索文件)
格式:FOR /D %variable IN (set) DO command [command-parameters]
for /d %%i in (c:/*) do echo %%i  --顯示c盤根目錄下的所有目錄
for /d %%i in (???) do echo %%i   --顯示當前目錄下名字只有1-3個字母的目錄(注意是目錄)
二、/R
(只搜索文件,不搜索目錄)
(搜索指定路徑及所有子目錄中與set相符合的所有文件)
格式:FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
for /r c:/ %%i in (boot.ini) do echo %%i
--枚舉了c盤所有目錄,找到含有boot.ini的路徑并顯示
for /r d:/backup %%i in (1) do echo %%i
--枚舉d/backup目錄,現在當前路徑和當前路徑下所有文件夾,不過后面帶了個1
d:\backup\1
for /r c:/ %%i in (boot.ini) do if exist %%i echo %%i
--很好的搜索命令,列舉boot.ini存在的目錄
三、/L
(以增量形式從開始到結束的一個數字序列??梢允褂秘摰?Step)
格式:FOR /L %variable IN (start,step,end) DO command [command-parameters]
該集表示以增量形式從開始到結束的一個數字序列??梢允褂秘摰?Step
示例:
for /l %%i in (1,1,5) do @echo %%i  --輸出1 2 3 4 5
for /l %%i in (1,2,10) do @echo %%i  --輸出1,3,5,7,9
for /l %%i in (100,-20,1) do @echo %%i  --輸出100,80,60,40,20
for /l %%i in (1,1,5) do start cmd  --打開5個CMD窗口
for /l %%i in (1,1,5) do md %%i  --建立從1~5共5個文件夾
for /l %%i in (1,1,5) do rd /q %%i  --刪除從1~5共5個文件夾
========================================================
setlocal 與 變量延遲
例1:
@echo off
set a=4
set a=5 & echo %a%
pause
結果:4
解說:為什么是4而不是5呢?在echo之前明明已經把變量a的值改成5了?
(set a=5
echo %a%
::這種情況a直接是5
)
讓我們先了解一下批處理運行命令的機制:
批處理讀取命令時是按行讀取的(另外例如for命令等,其后用一對圓括號閉合的所有語句也當作一行),在處理之前要完成必要的預處理工作,這其中就包括對該行命令中的變量賦值。我們現在分析一下例1,批處理
在運行到這句“set a=5 & echo %a%”之前,先把這一句整句讀取并做了預處理——對變量a賦了值,那么%a%當然就是4了?。]有為什么,批處理就是這樣做的。)
而為了能夠感知環(huán)境變量的動態(tài)變化,批處理設計了變量延遲。簡單來說,在讀取了一條完整的語句之后,不立即對該行的變量賦值,而會在某個單條語句執(zhí)行之前再進行賦值,也就是說“延遲”了對變量的賦值。
那么如何開啟變量延遲呢?變量延遲又需要注意什么呢?舉個例子說明一下:
例2:
@echo off
setlocal enabledelayedexpansion
set a=4
set a=5 & echo !a!
pause
結果:5
解說:啟動了變量延遲,得到了正確答案。變量延遲的啟動語句是“setlocal enabledelayedexpansion”,并且變量要用一對嘆號“!!”括起來(注意要用英文的嘆號),否則就沒有變量延遲的效果。
分析一下例2,首先“setlocal enabledelayedexpansion”開啟變量延遲,然后“set a=4”先給變量a賦值為4,“set a=5 & echo !a!”這句是給變量a賦值為5并輸出(由于啟動了變量延遲,所以批處理能夠感知到動態(tài)變化,即不是先給該行變量賦值,而是在運行過程中給變量賦值,因此此時a的值就是5了)。
再舉一個例子鞏固一下。
例3:
@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,5) do (
set a=%%i
echo !a!
)
pause
結果:
1
2
3
4
5
(若不加延遲變量,則會輸出幾個!a!字符)
解說:本例開啟了變量延遲并用“!!”將變量擴起來,因此得到我們預期的結果。如果不用變量延遲會出現什
么結果呢?結果是這樣的:
ECHO 處于關閉狀態(tài)。
ECHO 處于關閉狀態(tài)。
ECHO 處于關閉狀態(tài)。
ECHO 處于關閉狀態(tài)。
ECHO 處于關閉狀態(tài)。
即沒有感知到for語句中的動態(tài)變化。
========================================================
【續(xù)】[一日一教學]批處理系列帖子索引 http://www.bathome.net/thread-13798-1-1.html
序號
標    題
首發(fā)日期
更新日期
1
目錄跳轉:cd
20081112
2
以樹形格式羅列文件:tree
20081112
3
內容重定向:>和>>
20081113
4
條件判斷:if 
20081114
5
流程跳轉:goto
20081117
6
復制文件:copy
20081221
7
刪除文件:del
20090101
8
重命名文件(夾):ren
20090212
20090226
9
創(chuàng)建文件夾:md
20090213
10
刪除文件夾:rd
20090214
11
移動文件(夾):move
20090606
20080611
12
字符串查找:find
20090607
20090608
13
字符串查找增強:findstr
14
文件替換:replace
15
設置文件屬性:attrib
16
顯示磁盤卷標和序列號:vol
17
編輯磁盤卷標:label
18
轉換磁盤系統(tǒng)格式:convert
19
格式化磁盤:format
20
創(chuàng)建虛擬盤符:subst
21
給磁盤做個體檢:chkdsk
22
清理CMD屏幕上的信息:cls
23
更換CMD窗口的顏色:color
24
給CMD窗口換個標題:title
25
獲取系統(tǒng)日期:date
26
獲取系統(tǒng)時間:time
27
退出CMD窗口:exit
28
查看系統(tǒng)版本:ver
29
返回到上次路徑:pushd/popd
30
操控注冊表:reg
31
注冊dll文件:regsver32
32
打開文件、運行程序:start
33
關閉或重啟計算機:shutdown
34
顯示進程清單:tasklist
35
關閉指定進程:taskkill
36
查看IP配置信息:ipconfig
37
測試IP連接:ping
38
解析地址:arp
39
配置計算機網絡信息:netsh
40
傳輸文件:ftp
41
調用子過程或外部程序:call
42
顯示提示信息:echo
43
暫停執(zhí)行:pause
44
設置變量:set
45
注釋語句:rem和::
46
更改參數的位置:shift
47
一次只顯示單屏內容:more
48
字符串排序:sort
49
復合語句連接符:&、&&和||
50
管道符號:|
。。
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
批處理常用符號詳解
批處理學習:for語句詳解【經典】
批處理命令
DOS批處理中的字符串處理詳解(字符串截取)
Android手機上,利用bat腳本模擬用戶操作
Bat命令學習
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服