bat腳本if語句
1. bat鑴氭湰if涓澶氭潯浠惰佸備綍鍐
if "%date:~5,2%"=="06" if "%date:~8,2%"=="01" if %time:~,5"="00:00" echo Happy Children's Day!
pause
2. 怎麼編寫bat文件,是什麼語法,給幾個範本
【 echo 命令 】
打開回顯或關閉請求回顯功能,或顯示消息。如果沒有任何參數,echo 命令將顯示當前回顯設置。
語法
echo [{on|off}] [message]
Sample:@echo off / echo hello world
在實際應用中我們會把這條命令和重定向符號(也稱為管道符號,一般用> >> ^)結合來實現輸入一
些命令到特定的文件中。
【 rem 命令 】
注釋命令,類似於在C語言中的/*--------*/,它並不會被執行,只是起一個注釋的作用,便於別人閱讀
和你自己日後修改。
:: 也具有rem的功能
但::和rem還是有區別的,當關閉回顯時,rem和::後的內容都不會顯示。但是當打開回顯時,rem和rem
後的內容會顯示出來,然而::後的內容仍然不會顯示。
Rem Message
Sample:@Rem Here is the description.
【 pause 命令 】
暫停命令。運行 Pause 命令時,將顯示下面的消息:
Press any key to continue. . .(或:請按任意鍵繼續. . .)
Sample:
@echo off
:begin
G:*.* d:\back
echo 請插入另一張光碟...
pause
goto begin
在這個例子中,驅動器 G 中磁碟上的所有文件均復制到d:\back中。顯示的注釋提示您將另一張光碟
盤放入驅動器 G 時,pause 命令會使程序掛起,以便您更換光碟,然後按任意鍵繼續處理。
【 call 命令 】
從一個批處理程序調用另一個批處理程序,並且不終止父批處理程序。call 命令接受用作調用目標的
標簽。如果在腳本或批處理文件外使用 Call,它將不會在命令行起作用。
語法
call [[Drive:][Path] FileName ] [:label [arguments]]
參數
[Drive:}[Path] FileName
指定要調用的批處理程序的位置和名稱。
【 start 命令 】
調用外部程序,所有的DOS命令和命令行程序都可以由start命令來調用。
如:start calc.exe 即可打開Windows的計算器。
常用參數:
MIN 開始時窗口最小化
SEPARATE 在分開的空間內開始 16 位 Windows 程序
HIGH 在 HIGH 優先順序類別開始應用程序
REALTIME 在 REALTIME 優先順序類別開始應用程序
WAIT 啟動應用程序並等候它結束
parameters 這些為傳送到命令/程序的參數
執行的應用程序是 32-位 GUI 應用程序時,CMD.EXE 不等應用程序終止就返回命令提示。如果在命令
腳本內執行,該新行為則不會發生。
【 goto 命令 】
跳轉命令。程序指針跳轉到指定的標簽,從標簽後的第一條命令開始繼續執行批處理程序。
語法:goto label (label是參數,指定所要轉向的批處理程序中的行。)
Sample:
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
標簽的名字可以隨便起,但是最好是有意義的字母啦,字母前加個:用來表示這個字母是標簽,goto
命令就是根據這個:來尋找下一步跳到到那裡。最好有一些說明這樣你別人看起來才會理解你的意圖啊。
【 set 命令 】
顯示、設置或刪除變數。
顯示變數:set 或 set s 前者顯示批處理當前已定義的所有變數及其值,後者顯示所有以s開頭的變數及值。
設置變數:set aa=abcd 此句命令便可向變數aa賦值abcd。如果變數aa已被定義,則aa的值被修改為abcd;若aa尚未定義,則此句命令即可定義新的變數aa,同時為變數aa賦予初始值abcd。
刪除變數:set aa= 此句命令即可刪除變數aa。若變數aa已被定義,則刪除變數aa;若aa尚未定義,則此句命令為實質意義。
需要說明的是,批處理中的變數是不區分類型的,不需要像C語言中的變數那樣還要區分int、float、char等。比如執行set aa=345後,變數aa的值既可以被視為數字345,也可以被視為字元串345。
set命令具有擴展功能,如用作交互輸入、字元串處理、數值計算等,屬於高級命令范疇。
[編輯本段]批處理符號簡介
【 回顯屏蔽 @ 】
表示不顯示@後面的命令,在入侵過程中(例如使用批處理來格式化敵人的硬碟)自然不能讓對方看到你使用的命令啦。
@用法舉例:通過運行批處理文件對比pause和@pause命令即可明了@的效果。
【 重定向1 >與>> 】
將輸出信息重定向到指定的設備或文件。系統默認輸出到顯示器。
如:echo aaaaa>a.txt 即可將本在顯示器上顯示的信息aaaaa輸出到文件a.txt中,屏幕上沒有任何顯示。如果文件a.txt本來已經存在,該命令將首先擦除a.txt中的所有信息,然後寫入信息aaaaa;若a.txt本來就不存在,該命令即可新建一個a.txt文件,並寫入信息aaaaa。
echo aaaaa>>a.txt 類似於echo aaaaa>a.txt。區別在於:如果a.txt本已存在,>a.txt會擦除a.txt中的原有內容,而>>a.txt並不擦除原有內容,僅在a.txt文件的末尾添加信息aaaaa。a.txt不存在時,二者沒有差別。
【 重定向2 < 】
將輸入信息來源重定向為指定的設備或文件。系統默認從顯示器讀取輸入信息。
重定向使用舉例:
=========================================
@echo off
echo abcdefg——這是文件a.txt中的信息>a.txt
echo 請任意輸入字元,以回車結束:
set /p ifo=
cls
echo 【 從屏幕獲得的輸入信息 】
echo %ifo%
set /p ifo=<a.txt
echo 【 從文件a.txt獲得的輸入信息 】
echo %ifo%
pause>nul
=========================================
讀者觀察命令與輸出即可體會到重定向的功能和效果。
【 管道符號 | 】
將管道符號前面命令的輸出結果重定向輸出到管道符號後面的命令中去,作為後面命令的輸入。使用格式為:command_1|command_2
管道符號使用舉例:
=========================================
@echo off
echo aaaa>a.txt
del /p a.txt
pause
=========================================
@echo off
echo aaaa>a.txt
echo y|del /p a.txt
pause
=========================================
對比以上兩個批處理執行結果,讀者即可明白管道符的用法和效果。
需要說明的是,上面del命令添加開關/p只是為了讓讀者明白管道符號的使用方法,實際刪除文件時不加/p開關即可實現無提示直接刪除。
【 轉義符 ^ 】
將特殊符號轉化為一般符號,即剝離特殊符號的特殊地位。特殊符號指:| & > <
比如,如果我們想輸出符號「>」,直接用命令 echo > 是不行的,必須修改為 echo ^> 。其餘幾個特殊符號類似需要有同樣的處理。
轉義字元使用舉例:
=========================================
@echo off
echo aaaa>a.txt
echo 第一句echo執行完畢
echo aaaa^>a.txt
echo 第二句echo執行完畢
pause
=========================================
比較上面的兩句echo,第一句echo將信息aaaa輸出到了文件a.txt,而第二句echo則在直接屏幕上顯示出aaaa>a.txt
【 邏輯命令符 】
邏輯命令符包括:&、&&、||
&-它的作用是用來連接n個DOS命令,並把這些命令按順序執行,而不管是否有命令執行失敗;
&&-當&&前面的命令成功執行時,執行&&後面的命令,否則不執行;
||-當||前面的命令失敗時,執行||後面的命令,否則不執行。
=========================================
@echo off
echo ^|^|
reg add HKCU /v try /f||echo **成功**
reg add HKCU1 /v try /f||echo **失敗**
echo ^&^&
reg delete HKCU /v try /f&&echo **成功**
reg delete HKCU /v try /f&&echo **失敗**
echo ^&
reg delete HKCU /v try /f&echo **成功**
reg delete HKCU /v try /f&echo **失敗**
pause
=========================================
執行reg add或reg delete後,系統會給出執行結果;我們通過echo命令也給出了「執行結果」。對比系統和我們自己給出的結果,既可以驗證邏輯命令的判斷機理。
[編輯本段]常用DOS命令釋義
【 文件夾管理 】
cd 顯示當前目錄名或改變當前目錄。
md 創建目錄。
rd 刪除一個目錄。
dir 顯示目錄中的文件和子目錄列表。
tree 以圖形顯示驅動器或路徑的文件夾結構。
path 為可執行文件顯示或設置一個搜索路徑。
x 復制文件和目錄樹。
【 文件管理 】
type 顯示文本文件的內容。
將一份或多份文件復制到另一個位置。
del 刪除一個或數個文件。
move 移動文件並重命名文件和目錄。(Windows XP Home Edition中沒有)
ren 重命名文件。
replace 替換文件。
attrib 顯示或更改文件屬性。
find 搜索字元串。
fc 比較兩個文件或兩個文件集並顯示它們之間的不同
【 網路命令 】
ping 進行網路連接測試、名稱解析
ftp 文件傳輸
net 網路命令集及用戶管理
telnet 遠程登陸
ipconfig顯示、修改TCP/IP設置
msg 給用戶發送消息
arp 顯示、修改區域網的IP地址-物理地址映射列表
【 系統管理 】
at 安排在特定日期和時間運行命令和程序
shutdown立即或定時關機或重啟
tskill 結束進程
taskkill結束進程(比tskill高級,但WinXPHome版中無該命令)
tasklist顯示進程列表(Windows XP Home Edition中沒有)
sc 系統服務設置與控制
reg 注冊表控制台工具
powercfg控制系統上的電源設置
對於以上列出的所有命令,在cmd中輸入命令+/?即可查看該命令的幫助信息。如find /?
[編輯本段]語句結構釋義
類似於C語言,批處理也有它的語句結構。批處理的語句結構主要有選擇結構(if語句)、循環結構(for語句)等。
【 if語句(選擇結構) 】
if語句實現條件判斷,包括字元串比較、存在判斷、定義判斷等。通過條件判斷,if語句即可以實現選擇功能。
1、字元串比較
if語句僅能夠對兩個字元(串)是否相同、先後順序進行判斷等。其命令格式為:
IF [not] string1 compare-op string2 command1 [else command2]
其中,比較操作符compare-op有以下幾類:
== - 等於
EQU - 等於
NEQ - 不等於
LSS - 小於
LEQ - 小於或等於
GTR - 大於
GEQ - 大於或等於
選擇開關/i則不區分字元串大小寫;選擇not項,則對判斷結果進行邏輯非。
字元串比較示例:
===============================================
@echo off
set str1=abcd1233
set str2=ABCD1234
if %str1%==%str2% (echo 字元串相同!) else (echo 字元串不相同!)
if /i %str1% LSS %str2% (echo str1^<str2) else (echo str1^>=str2)
echo.
set /p choice=是否顯示當前時間?(y/n)
if /i not %choice% EQU n echo 當前時間是:%date% %time%
pause>nul
===============================================
對於最後一個if判斷,當我們輸入n或N時的效果是一樣的,都不會顯示時間。如果我們取消開關/i,則輸入N時,依舊會顯示時間。
另外請注意一下幾個細節:1-echo str1^<str2和echo str1^>=str2;2-echo.。
2、存在判斷
存在判斷的功能是判斷文件或文件夾是否存在。其命令格式為:
IF [NOT] EXIST filename command1 [else command2]
===============================================
@echo off
if exist %0 echo 文件%0是存在的!
if not exist %~df0 (
echo 文件夾%~df0不存在!
) else echo 文件夾%~df0存在!
pause>nul
===============================================
這里注意幾個地方:
1-存在判斷既可以判斷文件也可以判斷文件夾;
2-%0即代表該批處理的全稱(包括驅動器盤符、路徑、文件名和擴展類型);
3-%~df0是對%0的修正,只保留了其驅動器盤符和路徑,詳情請參考for /?,屬高級批處理范疇;
4-注意if語句的多行書寫,多行書寫要求command1的左括弧必須和if在同一行、else必須和command1的右括弧同行、command2的左括弧必須與else同行、command1和command2都可以有任意多行,即command可以是命令集。
3、定義判斷
定義判斷的功能是判斷變數是否存在,即是否已被定義。其命令格式為:
IF [not] DEFINED variable command1 [else command2]
存在判斷舉例:
===============================================
@echo off
set var=111
if defined var (echo var=%var%) else echo var尚未定義!
set var=
if defined var (echo var=%var%) else echo var尚未定義!
pause>nul
===============================================
對比可知,"set var="可以取消變數,收回變數所佔據的內存空間。
4、結果判斷
masm %1.asm
if errorlevel 1 pause & edit %1.asm
link %1.obj
先對源代碼進行匯編,如果失敗則暫停顯示錯誤信息,並在按任意鍵後自動進入編輯界面;否則用link程序連接生成的obj文件,這種用法是先判斷前一個命令執行後的返回碼(也叫錯誤碼,DOS程序在運行完後都有返回碼),如果和定義的錯誤碼符合(這里定義的錯誤碼為1),則執行相應的操作(這里相應的操作為pause & edit %1.asm部分)。
另外,和其他兩種用法一樣,這種用法也可以表示否定。用否定的形式仍表達上面三句的意思,代碼變為:
masm %1.asm
if not errorlevel 1 link %1.obj
pause & edit %1.asm
【 for語句(循環結構) 】
for語句可以實現類似於C語言裡面的循環結構,當然for語句的功能要更強大一點,通過不同的開關可以實現更多的功能。for語句有多個開關,不同開關將會實現不同的功能。
1、無開關
無開關的for語句能夠對設定的范圍內進行循環,是最基本的for循環語句。其命令格式為:
FOR %%variable IN (set) DO command
其中,%%variable是批處理程序裡面的書寫格式,在DOS中書寫為%variable,即只有一個百分號(%);set就是需要我們設定的循環范圍,類似於C語言裡面的循環變數;do後面的command就是循環所執行的命令,即循環體。
無開關for語句舉例:
===============================================
@echo off
for %%i in (a,"b c",d) do echo %%i
pause>nul
===============================================
2、開關/L
含開關/L的for語句,可以根據set裡面的設置進行循環,從而實現對循環次數的直接控制。其命令格式為:
FOR /L %%variable IN (start,step,end) DO command
其中,start為開始計數的初始值,step為每次遞增的值,end為結束值。當end小於start時,step需要設置為負數。
含開關/L的for語句舉例(創建5個文件夾):
===============================================
@echo off
for /l %%i in (1,2,10) do md %%i
pause
===============================================
上例將新建5個文件夾,文件夾名稱依次為1、3、5、7、9。可以發現,%%i的結束值並非end的值10,而是不大於end的一個數。
3、開關/F
含開關/F的for語句具有最強大的功能,它能夠對字元串進行操作,也能夠對命令的返回值進行操作,還可以訪問硬碟上的ASCII碼文件,比如txt文檔等。其命令格式為:
FOR /F ["options"] %%variable IN (set) DO command
其中,set為("string"、'command'、file-set)中的一個;options是(eol=c、skip=n、delims=xxx、tokens=x,y,m-n、usebackq)中的一個或多個的組合。各選項的意義參見for /f。一般情況下,使用較多的是skip、tokens、delims三個選項。
含開關/F的for語句舉例:
===============================================
@echo off
echo **No Options:
for /f %%a in ("1,2,10") do echo a=%%a
echo **Options tokens ^& delims:
for /f "tokens=1-3 delims=," %%a in ("1,2,10") do echo a=%%a b=%%b c=%%c
pause
===============================================
@echo off
echo 本文件夾裡面的文件有:
for /f "skip=5 tokens=3* delims= " %%a in ('dir') do (
if not "%%a"=="<DIR>" if not "%%b"=="位元組" if not "%%b"=="可用位元組" echo %%b
)
pause
===============================================
@echo off
echo 本文件夾裡面的文件有:
dir>c:\file.txt
for /f "skip=5 tokens=3* delims= " %%a in (c:\file.txt) do (
if not "%%a"=="<DIR>" if not "%%b"=="位元組" if not "%%b"=="可用位元組" echo %%b
)
del c:\file.txt
pause
===============================================
對於後面的兩個例子,其中options裡面的delims= 是可以刪除的,因為只要添加了/F開關系統就將delims的值默認為空格。
符號字元串中的最後一個字元星號,
那麼額外的變數將在最後一個符號解析之後
分配並接受行的保留文本。本例中也可以改為4,不過文件名中有空格的文件,只能顯示空格以前部分
同時我們也看到了,for語句的do後面的command也是可以分行的,只需要保證command的左括弧和do在同一行就可以了。
4、開關/D或/R
含開關/D或/R的for語句是與目錄或文件有關的命令,一般情況下很少使用。含開關/R的命令有時候被用於通過遍歷文件夾來查找某一個文件或文件夾,故而列舉此例。
含開關/R的for語句舉例(文件夾遍歷):
===============================================
@echo off
setlocal enabledelayedexpansion
FOR /R d: %%i IN (.) DO (
set dd=%%i
set "dd=!dd:~0,-1!"
echo !dd!
)
pause
exit
===============================================
上例即可以羅列出D盤下的所有文件夾,其速度要比命令"tree d:"慢多了,不過其返回結果的實用性則遠遠超過了tree命令。
一般情況下我們不推薦通過遍歷文件夾來查找文件,特別是在查找某些程序(比如QQ.exe)的位置時。推薦通過reg命令查找注冊表來查找QQ的路徑,以保證查找效率。
上例中也出現了幾個新面孔,如setlocal、感嘆號等。其中,感嘆號其實就是變數百分號(%)的強化版。之所以要用!而不用%,是因為在for循環中,當一個變數被多次賦值時,%dd%所獲取的僅僅是dd第一次被賦予的值;要想刷新dd的值,就必須首先通過命令"setlocal enabledelayedexpansion"來開啟延遲變數開關,然後用!dd!來獲取dd的值。
for語句是批處理裡面功能最強大、使用最普遍卻又最難掌握的一套命令,這也是批處理菜鳥和批處理高手最明顯的一個分水嶺,一旦掌握了這套命令,那麼你就離批處理達人不遠了!
參考http://ke..com/view/80110.htm?fr=ala0_1_1#3_2
3. 求腳本(BAT)基本命令
1.「@echo off」--我們所寫的BAT一開始一般都有這一句,這一句的作用是:使所有的命令響應隱藏。「@」--本行命令不回顯。(本來如果你用echo off就可以了,但是還是能夠看到echo off這條命令在CMD下,影響美觀) 2.「color 1e」--設置默認的控制台前景和背景顏色。當前我設為藍底黃字,具體顏色請在CMD下用「color /?」查詢。 --這里又提到了這個參數「/?」,一般CMD下命令後加「/?」就會顯示這條命令的幫助。 3.「rem」--注釋作用,批處理執行過程中前不執行它,rem 後的字元只作注釋作用。
4.「title」--設置命令提示窗口的窗口標題。默認為「cmd」。改成自己喜歡的多有個性,嘿嘿。
5.「cls」--不多說,清屏命令。主要是怕前面的一些空白或字元出現影響美觀。
6.「set」--這個命令的作用很大,請用「set /?」查詢具體使用方法。本例「set topip=172.16.」是將一個名為「topip」的變數值設為「172.16.」。注意CMD下變數的設置不區別數字與字元,能夠自動根據提供的值調整。下行「set theip=0.0」同理。
7.「echo .」--在新行中顯示一個「.」。echo命令能顯示其後的comment。這里提幾個有趣實用的用法--「echo.」,注意與前面的不同,「echo」與「.」間無空格。這條命令如同一個回車,在新行不顯示任何信息並換行。「echo 」,實現響鈴的提示音。後面一個字元的輸入方法是在CMD下用「ctrl+G」,而這個字元得到的方法是CMD下用命令「echo "ctrl+G" >ex.txt」,存入ex.txt文件,再從那裡提取出來的。嘿嘿,如果你懶得做,就我在上面提供的字元嘍。
8.「if」--這條命令也會經常用到,請用「if /?」學習更多信息。本例「if not exist scanipc.exe (echo 文件錯誤!……) 」,實現功能:當同級目錄下不存在「scanipc.exe」時,提示「文件錯誤!……」。否則不提示。「if not exist filename 」在批處理中使用比較多些。
9.「:top」,設置一個標志點,標志名為「top」。「:」的作用就是設置標志。網上有文章說「使用"::comment"作為注釋比"rem comment"執行效率更高。」我相信,這里也建議大家,如果BAT中注釋較多時,請使用「::comment」設置。
10.「set /p pno=」--設置一個變數,並接受用戶輸入。BAT不需要預先聲明變數,只在需要時設置。參數「/p」:將變數數值設成用戶輸入的一行輸入。
11.「if %pno% gtr 9 gotoonerrorspno」--檢驗用戶輸入值是否大於9,是,則轉到一個指定標志點。這里注意BAT中變數引用時要在前後加「%」,但在if語句中可有可無,具體應用大家多寫幾遍就有體會。
12.「goto label」--無條件跳轉到指定標志位並向後執行。BAT好像只有這么一個跳轉語句了,作用不用我說,用了就知道。注意不要構成死循環。
小結:到此,完成了顏色設置、注釋版權說明、標題設置、變數初始化、歡迎信息、功能界面初始化、標志點設置(因為歡迎信息只顯示一次而功能界面要多次使用所以將標志點設置在歡迎信息的後面。)命令的接受與跳轉。;功能界面一般要用「tab」鍵調整相對位置,才能起到美觀的效果。請多練習幾遍領會。;大家在寫腳本過程中要注意標志點的設置位置,才能起到合適的效果。一般寫過幾個腳本會有些感受。;接著接受用戶輸入後「cls」清屏開始執行指定功能。注意這個cls的作用。因為清屏可以在此時,也可以在每個命令執行之前,但如果在每個命令執行之前用的請,那麼要寫的cls就多了,於是把cls寫在這里合適,方便節約快捷。
大家在寫腳本時也應當注意這方面的技巧,將使你寫出更加高效節約方便的代碼。在每次寫完腳本後合理地整合一下自己的代碼。能積累不少經驗。;另外,鑒於部分人仍不知道如何建立BAT文件與運行,請:打開記事本,寫入代碼,保存,保存類型為「所有文件*.*」,文件名為「name*.BAT」。保存後,雙擊運行。因為一般BAT運行很快,所以你可能只看到窗口一閃就消失了,那麼你可以在exit 之前加pause確保能看見運行結果。到此,你應該能夠寫一個很簡單的腳本了,實現一些界面控制。
例1: @echo off color ca title 這是我第一個BAT腳本。 echo 這是我第一個BAT腳本。不錯啊。 pause >nul exit 第二節:(提一些好用的命令)以下設置的都是功能段,在「goto step%pno%」跳轉到相應功能段後,開始執行相應功能。一般命令段: step1:ping命令。(在echo中變數的引用請注意前後加「%」號,否則會導致程序出錯。)我們常用的ping命令:其實很簡單,自己看幫助啦。本句「ping %topip%%theip% -n 1 |findstr 100%>nul」將ping 只發送一次數據包,這樣命令執行起來就快多了,但這樣所會引起一定概率的誤判,而我們在內網這種概率很低,低到可以忽略。所以本人使用參數「-n 1」減少執行時間。將結果不回顯而通過管道命令「|」送給findstr分析,findstr查找是否存在「100%」,並將回顯「丟棄」--「>nul」。因為如果ping一台主機如果返回的結果有「100%」存在說明「不在線。或者有防火牆阻擋。」。所以用findstr確定字元串「100%」的存在性,因為 findstr也有回顯,但我們並不需要,所以將它「丟棄」,使用參數「>nul」將指定命令回顯丟棄。(這一句命令是重點,請仔細領會。)又因為findstr確定指定字元串的存在性後會設定環境變數「errorlevel」的值,所以我們根據「if %errorlevel% equ 0 (command)」,判斷findstr的執行結果就行了,也就不需要有回顯。 「errorlevel」作用很大,一般命令行下的命令執行後都有一個特別的errorlevel,我們就可以根據相應的「返回值」作出相應判斷並執行相應功能。findstr如果找到指定字元串,則有errorlevel=0,說明:IP不在線。那麼既然不在線,我們就沒有向下執行的必要了,直接跳回top界面功能接受下一次指令。如果IP有不同回應,說明在線,則開始檢測共享。「net view \\%topip%%theip%\」--查看指定IP的共享清單。net詳細命令請自行查閱。列出共享清單後返回功能界面。 step2:打開共享一。「explorer \\%topip%%theip%\」,用資源管理器打開指定的IP根。注意語法,其它也沒有什麼。 step3:IPC$空連接。「net use \\%topip%%theip%\ipc$ "" /user:"administrator"」,一個很老的漏洞,但也許內網還有機子存在哩,嘿嘿,語法就是這樣。 step4:一般信息。「ipconfig /all」--用於得到本機的IP與MAC等信息,很好用的命令。語法如示。 「nbtstat -na %topip%%theip%」--用於得到他方機子的一些信息,語法如示。另請自查幫助。 step5:Scanipc。用命令行打開了一個程序而已。在命令行下執行其它命令也就是這樣啦。 step6:返回時間。「net time \\%topip%%theip%」--探測指定機子時間,語法如示。 step7:遠程連接。「net use \\%topip%%theip%\admin$ "" /user:"administrator"」,嘿嘿,administrator空密碼連接。最簡單的入侵啦,嘿嘿嘿。語法如示。 step8:本機信息。跳到另一個功能界面執行相應功能。 step9:高級命令。跳到另一個功能界面執行相應功能。 step0:退出程序。一個exit退出腳本。「exit」,退出CMD。 onerrorsip:實現錯誤提示,並重新執行step1。 onerrorspno:實現錯誤提示,並重新跳轉到功能界面。高級命令段:引用前面已給定的IP,並對其進行一些高級操作。重新繪制功能界面。首先,注意在一個BAT文件中,不允許出現有標志名的重復。 step11:條件連接。設定兩個變數,分別為用戶名與密碼。注意到有一個默認的功能。實現原理是,當接受到用戶輸入為空時(即一個回車),變數將保持不變。條件連接語法如示。比前面遠程空密碼連接更高級一點,嘿嘿。 step12:打開共享。打開已經連接成功的對方計算機的指定盤。打開指定盤語法如示。 step13:發送消息。向對方發送消息。要求雙方的messager服務開啟,否則無法發送成功。發送消息語法如示。 step14:遠程關機。設置關機時間與關機理由,用shutdown程序關閉對方計算機,嘿嘿,惡作劇。要求你連接成功,並有 shutdown程序支持。shutdown語法自查幫助。 step15:溢出CMD。嘿嘿,溢出到對方的CMD下,算是一個真正的入侵了。當然需要用戶名與密碼嘍。要求用戶名與密碼正確並對方默認支持遠程管理。並有psexec程序支持。psexec語法如示,並請自查幫助。 step16:結束進程。嘿嘿,不說也知道,結束對方已知進程。要求連接成功並有pskill程序支持。惡作劇類,有惡意成分。嘿嘿。小心使用。 step17:ipc$連接。同step3. step18:斷開連接。斷開與對方的連接,就是擦屁股啦,以免讓對方有所察覺。這個好習慣要養成。語法如示。 step19:一般命令。返回前面一個功能界面。 step20:結束程序。退出。 step110:AT命令,令對方在指定時間運行指定命令。有點像木馬,嘿嘿。要求連接成功。因為節約變數,所以引用了前面的暫不使用的變數。好習慣。哈哈。 step111:telnet。遠程telnet。不要說你一點都不知道,語法如示並請自查幫助。 step112:更改主IP。主要是為了使我們的使用方便,對某個特定IP段探測能夠簡化輸入。如主IP改成「172.16.130.」,那麼專門對130探測,而且輸入IP時只需輸入最後位,嘿嘿,多方便啊。 step113:任意命令。主要是接受用戶輸入並執行用戶的輸入罷了,結構如示。本機信息段:主要是對本機信息的一些查詢語法。 stepm1:ipconfig,不說了。但請注意到,在功能界面的實現上有一點,「&」符號,因為「&」符號在CMD下是命令連接符,如果光用「&」會讓BAT誤解為其後的都是命令。但我們只是希望輸出一個「&」罷了,於是用「^」符號連接符表明只是輸出「&」,而不是實現命令連接。這里提一下「&」命令連接符,例如:echo frist&echo second.同效於: echo frist echo second. 只是實現結合兩行命令在同一行實現。類如一個很簡單的批處理啦。再提一下「^」符號連接符,對一些特殊符號可能在CMD下無法正確如願顯示,可用「^」連接,以達到如期效果。用了「^」在文本中佔了一位空間,但在輸出時它並不顯示,所以注意界面的布置。 stepm2:本機進程。利用命令行下的進程工具查看進程。要求pslist程序支持。 stepm3:本機用戶。就是查詢一下本機用戶,也許會發現機了被動過的痕跡。 stepm4:結束進程。在命令行下結束本機進程。要求有pskill程序支持。 stepm5:本機埠。也許能看出被攻擊或被入侵的痕跡。語法如示。 stepm6:共享情況。看看本機的共享是否真的如你所想,如你所見。否則請注意安全嘍。語法如示。 stepm7:啟動項值。在命令行下導出啟動項值並給出結果。比魔法兔子什麼的快多了,就是界面不是很好看,呵呵。語法如示。 stepm0:退出程序。退出。小結:到此,您學習過了一些有用的命令與應用。以及大部分的網路命令與外部程序的使用。接下來你可以模擬IP小工具寫出適合更自己的IP小工具哦。注意每執行完一項功能後要用goto返回功能界面,否則腳本無條件向下繼續執行。;errorlevel的應用。在BAT中,errorlevel的作用很大,大家在使用過程中通過多次接觸,感受一下如何玩轉errorlevel。在執行完一個程序後,可以用echo %errorlevel%查看程序運行後是如何設定errorlevel的值。;if的應用。在BAT中,if語句的作用也很大,特別與errorlevel結合實現自動判斷。以及一些基本條件判斷。請查看"if /?" 學習更詳細的說明。;變數的接受與傳遞。這方面的感覺需要大家多寫BAT才能有所感觸。如何合理與高效的應用變數,能使你的腳本更加漂亮。計算機語言都是實踐性很強的,我們學習理論只是基礎,通過大量的實踐才能真正掌握一門語言的應用。 第三節:(一些應用技巧與命令)接下來我們看我的「代理伺服器搜索組件 (ver 2.1)」, 1.「>」與「>>」的區別。 「>」--把指定數據傳送到指定文件或區域。有覆蓋作用,從文件頭開始重寫文件。如指定文件不存在,則新建文件並存入指定數據。 「>>」--以追加方式將指定數據傳送到指定文件或區域。從文件結尾開始寫入指定內容。這兩個功能有區別,請注意選擇合適的傳送方式傳送數據。例如:「echo 文本內容。>link.txt」與「echo 文本內容。>>link.txt」。若本不存在文件link.txt或文件link.txt內容為空,那麼兩條命令的運行結果相同。但如果link.txt不為空,那麼第一條命令將清除link.txt所有內容並存入數據「文本內容。 」保存。而第二條命令只在link.txt的文件尾(另起一行,注意每一個「>>」都會另起一行寫入新數據)追加數據「文本內容。」而以前的內容保持不變。還要特別提一個前面說過的「丟棄」用法「>nul」,因為我們有時候只需要命令的運行而並不需要看到命令的運行結果以及回顯,但這些命令又會出現我們並不需要看到的回顯,影響美觀。故在其後追加「>nul」,丟棄回顯。 2.循環語句的說明。例2: :puship set /p tip= if %tip%==%tbip% goto step1 set tbip=%tip% echo %tip% >>link.txt goto puship 本例中「if %tip%==%tbip% goto step1」與「if %tip% equ %tbip% goto step1」效果一樣。本例的作用是接受用戶帖入數據。關鍵技術在於:因為用戶帖入數據我們不能使用戶每次輸入都詢問是否結束,而需要實現「 智能化」的判斷,但如何以最少的代碼、最簡單的方法實現所謂的「智能化」呢。分析用戶輸入情況:因為一般用戶帖入數據都不會出現重復,所以我們利用這個特點,分析用戶的數據,當用戶帖入列表時,分析數據並將數據存入相應文本,以備後用。當用戶粘帖文本結束後,再加一個回車,因為最後一次變數沒有接受到任何修改,於是保持默認不變(也就是之前的數據。),再通過我們之前的數據備份對照,分析是否不變,是,則跳出循環。這樣,我們通過兩個變數以一個IF比較實現相對簡單的「智能化」。嘿嘿,這一點代碼想了我一個小時。這么說不知道大家是否能理解。請仔細參透例2的技術要點。 3.「FOR /F "eol=; tokens=1 delims=: " %%i in (link.txt) do (set /a Allip=Allip+1>nul)」 這句FOR語句是復雜的雜合語句。首先請用for /?查閱詳細用法,這里不再復述。但是特別要提一點的就是批處理與直接命令行下的CMD的區別在FOR語句上。批處理時,變數引用需要有兩個「%」號,否則無法正確執行,而CMD下不用,只需一個「%」。 「set /a Allip=Allip+1>nul」--實現算術運算,變數Allip的自增,注意大小寫。把回顯「丟棄」。本例實現對文件link.txt內容計數,忽略以「;」開頭的行。這就是為什麼我們在前面要用「echo ;:文本>link.txt」來創建文本的意義所在。 4.「call toping %%i」--從批處理程序調用另一個批處理程序。調用另一個批處理「toping.bat」(因為BAT可以直接運行所以不需要後綴BAT),並有參數傳遞。參數來自於FOR語句的提取。「FOR /F "eol=; tokens=1 delims=: " %%i in (link.txt) 」--從link.txt的每行中提取文本,從每行的開頭第一個字元開始(tokens=1),以「:」界定提取結尾(delims=: )。把提取結果賦給變數i。 5.「type」--在命令行下顯示指定文件的內容。相信大家應該很熟悉,不多說了。注意與「>或>>」的結合使用,或與其它操作符的結合使用。 6.「%1」--在CMD下,一個BAT能夠接受同時9位的參數,「%1~%9」,分別對應給定的參數變數。「%0」,即是文件本身。我們在使用BAT的過程中會經常遇到兩個或兩個以上腳本間需要參數傳遞。那麼請好好掌握這個用法,多說無益,需要大家在實踐中積累經驗。 7.再說一些比較邊緣,但大家比較興趣的命令。呵呵,不要做壞事。 net user admin 123 /add net localgroup administrators admin /add net localgroup users admin /del net user admin /active:yes net user net user admin net user admin /del 「net user admin 123 /add」--添加名為「admin」,密碼為「123」的用戶,如果「123」不寫,則默認密碼為空。 「net localgroup administrators admin /add」--將用戶「admin」加入「administrators」組,嘿嘿,高許可權。 「net localgroup users admin /del」--將「admin」從「users」組刪除。呵呵,因為用戶新加進去時都是「users」組,許可權比較低,所以要從這個組跳出來,保證administrators組的許可權正式發揮作用,如果不這么做,對方系統會默認你的最低許可權。 「net user admin /active:yes」--怕沒法使用沒有啟動,不要緊,激活這個帳號,嘿嘿。 「net user」--看看用戶有多少哦。 「net user admin」--看看剛剛加的用戶信息如何,是否如我所想,如我所願呢。 「net user admin /del」--刪除用戶admin。 -------------------------------------------------------------------------------------------------------------------
4. bat程序怎麼判斷輸入的變數
大家好,我是老蓋,首先感謝觀看本文,本篇文章做的有視頻,視頻講述的比較詳細,也可以看我發布的視頻。
今天我們學習批處理腳本中if命令條件處理控制語句,它的用法有很多,今天我們學習主要進行變數的一些判斷,判斷兩個變數是否相等,變數的大於小於之類的操作。
輸入命令if /?,可以看到這個命令的一些幫助和介紹,這個命令幫助介紹非常多,我這里用bat腳本開始芹族和大家講解一下。
我這里准備了一個批處理,這個批處理的代碼在上邊圖片有,也比較簡單,大家可以跟著圖片中的代碼,自己也寫一下練習一下,這里簡單的介紹一下這個代碼,第二行第三行是接收用戶的輸入,把用戶的輸入保存到var1和var2變數中,第四行然後通過If命令進行判斷兩個是否相等,如果相等的話,輸出相等,不相等的話輸出不相等。
這個批處理中用到的其他的命令,比如set,echo,我在以前的文章和視頻中都發布過,不太熟悉的朋友可以看以前我發布的文章和視頻。
運行這個批處理,輸入第一個字元1,和輸入第二個字元2,第三行就進行了判斷,輸出了兩個字元不相同,這個就是if命令語句判斷兩個變數是否相同不相同。
再測試一下,輸入兩個第一個字元1和第二個字元2,這個時候會提示兩個字元是相同的。
我們再看一下參數i。而 /I 開關(如果指定)說明要進行的字元串比較不分大小寫。
雙擊運運行一下,可以看到加了參數i,小寫a和大寫A是相同的。
我們把這個參數/i去掉。
再次運行,這里會提示小寫a和大寫A兩個字元是不相同的。
我們再換一個判斷變數大小的腳本,這里還是提示用戶首先輸入一個數字,然後根據用戶輸入的值進行判斷,大於10會輸出大於等於10,小於10的話會提示小於10。
運行這個腳本,然後輸入了一個數字20,這個時候腳本提示這個數大於或等於10。
再次運行,這次輸入了一個數字9,腳本提示次數小於10。
今天學的這個if命令主要進行兩個變數的判斷是否相等,還有變數的大於小於之類的一些操和首扮作,if命令在bat批處理腳本中用的非常多,比較重要,大家可以多練習一下,關於if判斷文件是否存在,我們下篇文章在講解。
感謝觀看本篇文章,希望對你有所幫助,本文由老蓋聊技術原創,我是老蓋喚灶,專注分享IT互聯網與電腦知識,歡迎關注,本文是出於愛心幫助人的目的所寫,請隨意分享轉載,幫助人越多愛的力量就越大,感謝正能量傳播。
5. 如何讓bat腳本循環執行
讓bat腳本循環執行有以下兩種方法:
第一、可以直接加個%0,即執行本身,實現循環。
第二、用goto命令,去到你要重復的開頭,如果要限制次數,可以先set 一個值,循環一次減1,條件命令到0退出,實現循環。