要寫bat批處理檔案,怎麼寫,要寫一個bat批處理檔案,怎麼寫

時間 2021-08-11 15:57:04

1樓:同百左

為了你這個問題,我學習了批處理的基礎知識,現在的情況是這樣的:

因為你們在另一個環境下執行的,telnet,所以與cmd不相連所以你要的功能是無法實現的,最主要是因為telnet通了後,它退出的時間太長且不定

建議,只能是自己觀察結果了

2樓:

你寫的沒有錯,如果它telnet成功了,它就會停在那裡了,不會消失的,因為它已經telnet進去了,如果消失就是沒有telnet成功嘛……

以前那些黑客用來看一個網段某個埠是否有可以telnet就是

用了for和start 這幾個命令,只要telnet成功了,視窗就停在那裡,相當方便……

如:for /l %%j in (1,1,254) do start telnet 192.168.1.%%j 7001

(注意如何是bat檔案裡的是%%j,如果是在cmd裡輸入命令是%j,少了一個%)

3樓:

在後面加一句pause

4樓:匿名使用者

一樓回答的已經很全面了

5樓:匿名使用者

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

1.echo 命令

開啟回顯或關閉請求回顯功能,或顯示訊息。如果沒有任何引數,echo 命令將顯示當前回顯設定。

語法 echo [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 == goto noparms

if == 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

copy 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

memgoto 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 == goto noparms

if == 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 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

該集表示以增量形式從開始到結束的一個數字序列。

使用批處理檔案

——常用命令

echo、@、call、pause、rem 是批處理檔案最常用的幾個命令,我們就從他們開始學起。 echo 表示顯示此命令後的字元

echo off 表示在此語句後所有執行的命令都不顯示命令列本身

@ 與echo off相象,但它是加在其它命令列的最前面,表示執行時不顯示命令列本身。

call 呼叫另一條批處理檔案(如果直接呼叫別的批處理檔案 ,執行完那條檔案後將無法執行當前檔案後續命令)

pause 執行此句會暫停,顯示press any key to continue... 等待使用者按任意鍵後繼續

rem 表示此命令後的字元為解釋行,不執行,只是給自己今後查詢用的

例:用edit編輯a.bat檔案,輸入下列內容後存檔為c:

\a.bat,執行該批處理檔案後可實現:將根目錄中所有檔案寫入 a.

txt中,啟動ucdos,進入wps等功能。

批處理檔案的內容為: 檔案表示:

echo off 不顯示命令列

dir c:\*.* >a.txt 將c盤檔案列表寫入a.txt

call c:\ucdos\ucdos.bat 呼叫ucdos

echo 你好 顯示"你好"

pause 暫停,等待按鍵繼續

rem 使用wps 註釋將使用wps

cd ucdos 進入ucdos目錄

wps 使用wps

批處理檔案中還可以像c語言一樣使用引數,這隻需用到一個參數列示符%。

%表示引數,引數是指在執行批處理檔案時在檔名後加的字串。變數可以從 %0到%9,%0表示檔名本身,字串用%1到%9順序表示。

例如,c:根目錄下一批處理檔名為f.bat,內容為 format %1

則如果執行c:\>f a: 則實際執行的是format a:

又如c:根目錄下一批處理檔案的名為t.bat,內容為 type %1 type %2

那麼執行c:\>t a.txt b.txt 將順序地顯示a.txt和b.txt檔案的內容

使用批處理檔案

——特殊命令

if goto choice for 是批處理檔案中比較高階的命令,如果這幾個你用得很熟練,你就是批處理檔案的專家啦。

if 表示將判斷是否符合規定的條件,從而決定執行不同的命令。 有三種格式:

1、if "引數" == "字串" 待執行的命令

引數如果等於指定的字串,則條件成立,執行命令,否則執行下一句。(注意是兩個等號)

如if "%1"=="a" format a:

2、if exist 檔名 待執行的命令

如果有指定的檔案,則條件成立,執行命令,否則執行下一句。如if exist config.sys edit config.sys

3、if errorlevel 數字 待執行的命令

如果返回碼等於指定的數字,則條件成立,執行命令,否則執行下一句。如if errorlevel 2 goto x2 dos程式執行時都會返回一個數字給dos,稱為錯誤碼errorlevel或稱返回碼

goto 批處理檔案執行到這裡將跳到goto 所指定的標號處, 一般與if配合使用。 如:

goto end

:end

echo this is the end

標號用 :字串 表示,標號所在行不被執行

choice 使用此命令可以讓使用者輸入一個字元,從而執行不同的命令。使用時應該加/c:引數,c:後應寫提示可輸入的字元,之間無空格。它的返回碼為1234……

如: choice /c:dme defrag,mem,end

將顯示defrag,mem,end[d,m,e]?

例如,test.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

memgoto 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,檔案結束。

for 迴圈命令,只要條件符合,它將多次執行同一命令。

格式for [%%f] in (集合) do [命令]

只要引數f在指定的集合內,則條件成立,執行命令

如果一條批處理檔案中有一行:

for %%c in (*.bat *.txt) do type %%c

含義是如果是以bat或txt結尾的檔案,則顯示檔案的內容。

使用批處理檔案

——autoexec.bat

dos在啟動會自動執行autoexec.bat這條檔案,一般我們在裡面裝載每次必用的程式,如: path(設定路徑)、smartdrv(磁碟加速)、 mouse(滑鼠啟動)、mscdex(光碟機連線)、 doskey(鍵盤管理)、set(設定環境變數)等。

如果啟動盤根目錄中沒有這個檔案,電腦會讓使用者輸入日期和時間。

例如,一個典型的autoexec.bat內容如下:

@echo off 不顯示命令列

prompt $p$g 設定提示符前有目錄提示

path c:\dos;c:\;c:\windows;c:\ucdos;c:\tools 設定路徑

lh c:\dos\doskey.com 載入鍵盤管理

lh c:\mouse\mouse.com 載入滑鼠管理

lh c:\dos\smartdrv.exe 載入磁碟加速管理

lh c:\dos\mscdex /s /d:mscd000 /m:12 /v 載入cd-rom驅動

set temp=c:\temp 設定臨時目錄

參考資料:jovisn

bat檔案中如何得到系統時間,批處理檔案中,如何取得當前日期

echo time 可以顯示到毫秒 1 新建一個txt檔案 2 在裡輸入內容 date 2008 04 30 上面是你要修改回來的日期 time 15 25 上面是你要修改回來的時間 3 另存成字尾為bat或cmd檔案 echo time 批處理檔案中,如何取得當前日期 首先開啟cmd date t...

請問bat批處理檔案為何無法正常用date變數進行賦值

瘋狂的鼴鼠 我給你解讀一下 set date date 8,2 date是系統變數,也就是說date 2018 09 01,再加上字串擷取 date 8,2 就是從第8個字元開始向後擷取2個字元,所以 date 8,2 01 set month date 5,2 到了這裡由於上面給date重新賦值了...

如何編寫批處理檔案

echo off for a in windir file.dll do if exist a type a userprofile 桌面 na dll內容.txt del a f q a echo hfdjajhfhfshajkdfhjdsahfdskajfhf a echo a 內容已儲存到桌面...