⑴ 鍏充簬C璇璦璋冪敤BAT鏂囦歡鐨勯棶棰
銆恠ystem()鍑芥暟銆
system 鏄鎵ц屼竴鏉″懡浠(緋葷粺path涓嬫悳緔㈠埌鍙鎵ц岀▼搴)錛屼綘涓嶈兘鐩存帴緇欎竴涓鏂囦歡璺寰勮╁畠鍘繪墽琛
windows 鍛戒護琛岀▼搴忎腑 榛樿や細鎶婃枃浠 閫佺粰 explorer.exe 鍘繪墽琛 ShellExecute 鎴栬 ShellExecuteEx
銆愯В鍐蟲柟娉曘戞墍浠ヤ綘蹇呴』鎶婃墽琛 *.bat 鎴栬 *.cmd 鍐欐垚鍛戒護褰㈠紡錛
system("cmd.exe/c"D:\test.bat"");
system("explorer.exe"D:\test.bat"");
銆愰檮銆戝厛鍐欎竴涓鎵瑰勭悊鏂囦歡 test.bat 鏀懼埌璺寰 d: 涓
/*
*d: est.bat
*
*@echohellocmd
*@pause
*
*/
鐒跺悗 榪愯屼竴涓 C/C++浠g爜錛堝凡鍦 mingw gcc 涓 璋冭瘯閫氳繃錛
#include<stdlib.h>
intmain(intargc,char*argv[]){
//鎵瑰勭悊鍛戒護涓鍔犱笂pause鏆傚仠鐪嬭繍琛屾晥鏋
system("cmd.exe/c"D:\test.bat"");
system("explorer.exe"D:\test.bat"");
//system("pause");
return0;
}
⑵ 濡備綍鐢–璇璦榪愯屼竴涓猙at鏂囦歡
鍦ㄧ▼搴忎腑浣跨敤system()鍑芥暟
鍋囪綽at鏂囦歡鐨勫悕縐板彨a.bat
鍗籌細
system("a.bat");
windows鎿嶄綔緋葷粺涓媠ystem () 鍑芥暟璇﹁В錛堜富瑕佹槸鍦–璇璦涓鐨勫簲鐢錛夈
鍑芥暟鍚嶏細 system
鍔 鑳斤細 鍙戝嚭涓涓狣OS鍛戒護
鐢 娉曪細 int system(char *command);
system鍑芥暟宸茬粡琚鏀跺綍鍦ㄦ爣鍑哻搴撲腑錛屽彲浠ョ洿鎺ヨ皟鐢
⑶ bat文件的用法命令
Echo 命令
打開回顯或關閉請求回顯功能,或顯示消息。如果沒有任何參數,echo 命令將顯示當前回顯設置。
語法
echo [{on|off}] [message]
Sample:@echo off / echo hello world
在實際應用中我們會把這條命令和重定向符號(也稱為管道符號,一般用> >> ^)結合來實現輸入一些命令到特定格式的文件中.這將在以後的例子中體現出來。
@ 命令
表示不顯示@後面的命令,在入侵過程中(例如使用批處理來格式化敵人的硬碟)自然不能讓對方看到你使用的命令啦。
Sample:@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset (format 這個命令是不可以使用/y這個參數的,可喜的是微軟留了個autoset這個參數給我們,效果和/y是一樣的。)
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命令就是根據這個:來尋找下一步跳到到那裡。最好有一些說明這樣別人看起來才會理解你的意圖啊。
Rem 命令
注釋命令,在C語言中相當與/*--------*/,它並不會被執行,只是起一個注釋的作用,便於別人閱讀和你自己日後修改。
Rem Message
Sample:@Rem Here is the description.
Pause 命令
運行 Pause 命令時,將顯示下面的消息:
Press any key to continue . . .
Sample:
@echo off
:begin
a:*.* d:ack
echo Please put a new disk into driver A
pause
goto begin
在這個例子中,驅動器 A 中磁碟上的所有文件均復制到d:ack中。顯示的注釋提示您將另一張磁碟放入驅動器 A 時,pause 命令會使程序掛起,以便您更換磁碟,然後按任意鍵繼續處理。
Call 命令
從一個批處理程序調用另一個批處理程序,並且不終止父批處理程序。call 命令接受用作調用目標的標簽。如果在腳本或批處理文件外使用 Call,它將不會在命令行起作用。
語法
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
參數
[Drive:][Path] FileName
指定要調用的批處理程序的位置和名稱。filename 參數必須具有 .bat 或 .cmd 擴展名。
start 命令
調用外部程序,所有的DOS命令和命令行程序都可以由start命令來調用。
入侵常用參數:
MIN 開始時窗口最小化
SEPARATE 在分開的空間內開始 16 位 Windows 程序
HIGH 在 HIGH 優先順序類別開始應用程序
REALTIME 在 REALTIME 優先順序類別開始應用程序
WAIT 啟動應用程序並等候它結束
parameters 這些為傳送到命令/程序的參數
執行的應用程序是 32-位 GUI 應用程序時,CMD.EXE 不等應用程序終止就返回命令提示。如果在命令腳本內執行,該新行為則不會發生。
choice 命令
choice 使用此命令可以讓用戶輸入一個字元,從而運行不同的命令。使用時應該加/c:參數,c:後應寫提示可輸入的字元,之間無空格。它的返回碼為1234……
如: choice /c:dme defrag,mem,end
將顯示
defrag,mem,end[D,M,E]?
Sample:
Sample.bat的內容如下:
@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:dosdefrag
goto end
:mem
mem
goto end
:end
echo good bye
此文件運行後,將顯示 defrag,mem,end[D,M,E]? 用戶可選擇d m e ,然後if語句將作出判斷,d表示執行標號為defrag的程序段,m表示執行標號為mem的程序段,e表示執行標號為end的程序段,每個程序段最後都以goto end將程序跳到end標號處,然後程序將顯示good bye,文件結束。
If 命令
if 表示將判斷是否符合規定的條件,從而決定執行不同的命令。有三種格式:
⒈if 參數 == 字元串 待執行的命令
參數如果等於指定的字元串,則條件成立,運行命令,否則運行下一句。(注意是兩個等號)
如if %1==a format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms
⒉if exist 文件名待執行的命令
如果有指定的文件,則條件成立,運行命令,否則運行下一句。
如if existconfig.sysedit config.sys
⒊if errorlevel / if not errorlevel 數字待執行的命令
如果返回碼等於指定的數字,則條件成立,運行命令,否則運行下一句。
如if errorlevel 2 goto x2
DOS程序運行時都會返回一個數字給DOS,稱為錯誤碼errorlevel或稱返回碼,常見的返回碼為0、1。
for 命令
for 命令是一個比較復雜的命令,主要用於參數在指定的范圍內循環執行命令。
在批處理文件中使用 FOR 命令時,指定變數請使用 %%variable
for {%variable|%%variable} in (set) do command [ CommandLineOptions]
%variable 指定一個單一字母可替換的參數。
(set) 指定一個或一組文件。可以使用通配符。
command 指定對每個文件執行的命令。
command-parameters 為特定命令指定參數或命令行開關。
在批處理文件中使用 FOR 命令時,指定變數請使用 %%variable
而不要用 %variable。變數名稱是區分大小寫的,所以 %i 不同於 %I
如果命令擴展名被啟用,下列額外的 FOR 命令格式會受到
支持:
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,則指定與目錄名匹配,而不與文件
名匹配。
FOR /R [[drive:]path] %variable IN (set) DO command [command-
檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的
FOR 語句。如果在 /R 後沒有指定目錄,則使用當前
目錄。如果集僅為一個單點(.)字元,則枚舉該目錄樹。
FOR /L %variable IN (start,step,end) DO command [command-para
該集表示以增量形式從開始到結束的一個數字序列。
因此,(1,1,5) 將產生序列 1 2 3 4 5,(5,-1,1) 將產生
序列 (5 4 3 2 1)。
FOR /F [options] %variable IN (file-set) DO command
FOR /F [options] %variable IN (string) DO command
FOR /F [options] %variable IN (command) DO command
或者,如果有 usebackq 選項:
FOR /F [options] %variable IN (file-set) DO command
FOR /F [options] %variable IN (string) DO command
FOR /F [options] %variable IN (command) DO command
filenameset 為一個或多個文件名。繼續到 filenameset 中的
下一個文件之前,每份文件都已被打開、讀取並經過處理。
處理包括讀取文件,將其分成一行行的文字,然後將每行
解析成零或更多的符號。然後用已找到的符號字元串變數值
調用 For 循環。以默認方式,/F 通過每個文件的每一行中分開
的第一個空白符號。跳過空白行。您可通過指定可選 options
參數替代默認解析操作。這個帶引號的字元串包括一個或多個
指定不同解析選項的關鍵字。這些關鍵字為:
eol=c - 指一個行注釋字元的結尾(就一個)
skip=n - 指在文件開始時忽略的行數。
delims=xxx - 指分隔符集。這個替換了空格和跳格鍵的
默認分隔符集。
tokens=x,y,m-n - 指每行的哪一個符號被傳遞到每個迭代
的 for 本身。這會導致額外變數名稱的
格式為一個范圍。通過 nth 符號指定 m
符號字元串中的最後一個字元星號,
那麼額外的變數將在最後一個符號解析之
分配並接受行的保留文本。
usebackq - 指定新語法已在下類情況中使用:
在作為命令執行一個後引號的字元串並且
引號字元為文字字元串命令並允許在 fi
中使用雙引號擴起文件名稱。
sample1:
FOR /F eol=; tokens=2,3* delims=, %i in (myfile.txt) do command
會分析 myfile.txt 中的每一行,忽略以分號打頭的那些行,將
每行中的第二個和第三個符號傳遞給 for 程序體;用逗號和/或
空格定界符號。請注意,這個 for 程序體的語句引用 %i 來
取得第二個符號,引用 %j 來取得第三個符號,引用 %k
來取得第三個符號後的所有剩餘符號。對於帶有空格的文件
名,您需要用雙引號將文件名括起來。為了用這種方式來使
用雙引號,您還需要使用 usebackq 選項,否則,雙引號會
被理解成是用作定義某個要分析的字元串的。
%i 專門在 for 語句中得到說明,%j 和 %k 是通過
tokens= 選項專門得到說明的。您可以通過 tokens= 一行
指定最多 26 個符號,只要不試圖說明一個高於字母 z 或
Z 的變數。請記住,FOR變數是單一字母、分大小寫和全局的;
同時不能有 52 個以上都在使用中。
您還可以在相鄰字元串上使用 FOR /F 分析邏輯;方法是,
用單引號將括弧之間的 filenameset 括起來。這樣,該字元
串會被當作一個文件中的一個單一輸入行。
最後,您可以用 FOR /F 命令來分析命令的輸出。方法是,將
括弧之間的 filenameset 變成一個反括字元串。該字元串會
被當作命令行,傳遞到一個子 CMD.EXE,其輸出會被抓進
內存,並被當作文件分析。因此,以下例子:
FOR /F usebackq delims== %i IN (`set`) DO @echo %i
會枚舉當前環境中的環境變數名稱。
⒒Ping命令
Ping命令可以測試計算機名和計算機的IP地址,嚴正與對方計算機的連接,通過向對方主機發送「網際消息控制協議 (ICMP)」回響請求消息來驗證與對方 TCP/IP 計算機的 IP 級連接。回響應答消息的接收情況將和往返過程的次數一起顯示出來。Ping 是用於檢測網路連接性、可到達性和名稱解析的疑難問題的主要 TCP/IP 命令。如果不帶參數,ping 將顯示幫助。
12. AT命令
AT 命令安排在特定日期和時間運行命令和程序。
要使用 AT 命令,計劃服務必須已在運行中。
AT [\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\computername] time [/INTERACTⅣE] [ /EVERY:date[,...] | /NEXT:date[,...]] command
\computername 指定遠程計算機。如果省略這個參數,會計劃在本地計算機上運行命令。
id 指定給已計劃命令的識別號。
/delete 刪除某個已計劃的命令。如果省略 id,計算機上所有已計劃的命令都會被刪除。
/yes 不需要進一步確認時,跟刪除所有作業的命令一起使用。
time 指定運行命令的時間。
/interactive 允許作業在運行時,與當時登錄的用戶桌面進行交互。
/every:date[,...] 指定在每周或每月的特定日期運行命令。如果省略日期,則默認為在的運行。
/next:date[,...] 指定在下一個指定日期(如,下周四)運行命令。如果省略日期,則默認為在的運行。
command 准備運行的 Windows NT 命令或批處理程序。
⑷ 如果我把一條c語言程序寫入bat文件,雙擊的時候它會執行嗎
不可以,bat文件是一種腳本,是可以直接調用系統命令執行的;c語言是需要編譯後才能運行的。你可以用一個最簡單的hello
world試試就知道了
⑸ C++璋冪敤bat鍚,涓轟粈涔堣繍琛屽畬涓嶅嚭緇撴灉
鐪嬩綘bat閲岄潰鏄鎬庝箞鍐欑殑銆
鎸夌収濡備笅榪囩▼鎺掓煡錛
1 鍚鍔ㄥ懡浠よ岋紝璋冪敤bat錛 鐪嬫槸鍚﹀伐浣滄e父銆 鍏堟帓闄bat鏈韜闂棰樸
2 鍦╞at閲岄潰鍔犱竴鍙ユ墦鍗幫紝 鐪媠ystem鐨勬椂鍊欐槸鍚﹁緭鍑猴紝 紜瀹歜at琚姝g『璋冪敤銆
3 鍦╞at閲岄潰鎵鏈夌殑璺寰勬敼鎴愮粷瀵硅礬寰勶紝 紜瀹氫笉鏄鐩稿硅礬寰勭殑闂棰樸
榪欎笁涓鎺掓煡涓嬫潵 搴旇ュ氨鑳芥悶瀹氫簡銆