冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 3700|回覆: 0
打印 上一主題 下一主題

[分享] 撰寫 windows 的 batch 檔

[複製鏈接]

1114

主題

0

好友

1042

積分

高級贊助會員

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

UID
390967
帖子
2182
主題
1114
精華
0
積分
1042
楓幣
26484
威望
578
存款
10100
贊助金額
1800
推廣
0
GP
3799
閱讀權限
150
在線時間
272 小時
註冊時間
2023-5-18
最後登入
2025-12-25

2023年紀念勳章 太陽勳章 神手勳章 高級客戶 VIP會員 私服達人 懶人勳章 幼兒勳章 音樂勳章 屁孩勳章 貢獻王 性別(女) 性別(男) 積分勳章 發帖達人 2023端午節紀念勳章 富豪勳章 富可敵國 2023中秋節紀念勳章 解說達人 論壇粉絲 2023聖誕節紀念勳章 2024年紀念勳章 2024端午節紀念勳章 2024中秋節紀念勳章 2024聖誕節紀念勳章 2025年紀念勳章 2025端午節紀念勳章 2025中秋節紀念勳章 2025聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-6-1 00:22:35 |只看該作者 |倒序瀏覽
早期在DOS系統工作下,都可能需要使用批次檔來執行電腦工作,當文字介面的系統逐漸被windows、Unix系統(圖形介面)所取代時,現今一般使用電腦的人,可能也不是很清楚什麼是批次檔,我們今天就來介紹何謂批次檔。

批次檔是一種文字檔案(ASCII檔案),由一連串的MS-DOS命令所組成的。批次檔的命名規則與一般檔案相同,但其副檔名固定為".BAT",即"將一連串的命令"儲存在檔案中,該批次檔的指令可無限制的重覆使用,永遠得到相同的執行結果。究竟批次檔又該如何使用呢?以下介紹批次檔的常用指令。

批次檔的常用指令如下:

一、 ECHO
在正常的情況下,批次檔中的每道命令執行前都會先出現螢幕上。有了ECHO命令,就可以任意控制是否列印出命令列。
用法:在批次檔中鍵入echo on/off ,on:表示要印出命令列,off:則不印出命令列,若要禁止批次檔的命令顯示在螢幕上,則使用隱藏echo off(@ECHO OFF),用法在命令列的開頭上加上@符號
Ex:
@Echo off 表示資料隱藏
echo .... 測試ECHO指令
echo .... 請稍後
echo .... 完成.....

二、 代換參數
代換參數的標記是一個百分號(%)再跟著一個阿拉伯數字,最多可使用10個代換參數,這些變數的值,則由呼叫批次檔的命令所指定。
Ex:
@echo off
echo .... 測試代換參數指令
echo .... 請稍後
echo .... 完成.....
echo %1 %2 %3 %4

三、 PAUSE:是暫停批次檔的執行。當MS-DOS執行到PAUSE時就暫時中止目前的工作,並印出下列訊息:
press any key to contunue ……
Ex:
@echo off
echo .... 測試代換參數指令
echo .... 請稍後
echo .... 完成.....
echo %1 %2 %3 %4
pause
echo %5 %6

四、 REM(REMark)用來在批次檔執行中顯示某些訊息,用法是在批次檔中鍵入rem,後面跟著所要顯示的字串
Ex:
@echo off
echo .... 測試代換參數指令
echo .... 請稍後
echo .... 完成.....
rem 下面指令,開始做代換參數
echo %1 %2 %3 %4
pause
echo %5 %6

五、 IF
IF命令在批次檔中用來測試特定的條件,以決定是否執行某些命令。絛件的型態分為四種:
(1) IF EXIST
此條件是用來檢查某一檔案是否存在,若存在則條件成立,便執行指定的命令
Ex:
@echo off
if exist test1.bat type test1.bat
echo 執行程式結束

2) IF String1 = = String2(= = 表相等性的比較)
Ex:
@echo off
echo .... 測試IF指令
echo %1
if %1 == a goto first
if %1 == b goto second
if %1 == c goto three
:first
echo 執行first (a)
goto finish
:second
echo 執行second (b)
goto finish
:three
echo 執行three (c)
goto finish
:finish

(3) IF ERRORLEVEL
ERRORLEVEL是由MS-DOS所管理的一個系統變數,目的是監視所有錯誤發生的情況。(類似ErrorMessage)

(4) IF NOT
IF NOT是當測試條件不成立時才執行後面命令

Ex:
@echo off
if not exist test1.bat type test1.bat
echo 執行程式結束

六、 GOTO
GOTO命令在批次檔中用來轉移控制權,可以指示批次檔跳至某一標記(line label)由一個冒號(:)跟著字元符號所組成的;label也可使用代換變數
Ex:
goto first 或 goto %1

七、 FOR
FOR命令允許批次檔中的其他命令,可以重覆地執行
for %%a IN (file1 file2 file3) DO del %%a
虛擬變數必須以兩個百分號(%%)起頭,in後面著參數列,do後面跟著要執行的命令

Ex:
@echo off
echo .... 測試FOR指令
echo .... 請稍後
echo .... 完成.....
echo ....
for %%a IN (test_a.bat test_b.bat test_c.bat) do copy %%a prn

八、 SHIFT
SHIFT命令允許在批次檔的起動命令中,使用超過10以上的實際參數
(%0~%9)
九、 CALL
模組化的程式設計,是將一個完整的程式分割成一個個獨立的模組(module),每個模組負責一項功能
Ex:
@echo off
echo .... 測試CALL指令
echo .... 請稍後
echo %1 %2
call test_b
echo %3 %4
echo 程式模組已執行完畢 (test_a.bat)

@echo off
echo 執行test_b程式
echo 即將執行test_c .....
call test_c
echo 執行test_b程式完畢~~~ (test_b.bat)

@echo off
echo 執行test_c程式
if exist test2.bat type test2.bat
echo 執行test_c程式完畢~~~ (test_b.bat)

執行 test_a

你到DOS模式下...
c:\>copy con TEST.BAT (TEST只是舉例檔名你可以自己想一個"英文")
就可以開始寫了
以下我張貼一些規則喔

批次檔介紹:

*DOS指令的特色:一個口令,一個動作

*批次檔(Batch file)的定義:由一個或一個以上的dos指令所組成的檔案,它是一個可以直接在dos下直接執行的執行檔.當執行一個批次檔之時,dos會將該批次檔內的所有指令依序執行,故可免重覆輸入相同的指令,節省時間.

*編輯工具: DOS Editor 或記事本

批次檔的規格

*須為純文字.每項指令須在一行(最多127字)內

*要以.bat為副檔名.主檔名須避免與dos指令同名----如Copy/Del/Exit.bat等等

*批次檔須用DOS指令加特定語次寫成:

call choice echo

for…in…do goto if(if exit)(if not exist)

pause rem shift

*批次檔的主檔名與.com或.exe的主檔名相同時,就要鍵入全名

*批次檔執行中,按Ctrl+C或Ctrl+Break可終止

批次檔的相關指令:

*ECHO----On/Off----文字敘述顯示與否?

*PAUSE----暫停執行

*CALL-----呼叫另一批次檔

*REN-------在批次檔加上註解文字,增加可讀性

批次檔是一串指令,例如:
C:\when.bat
--sof--
date
time
--eof--
執行它:
--start--
C:\>when

C:\>date
現在日期是: 11/09/2005 Sun
輸入新日期: (dd-mm-yy)

C:\>time
現在時間是: 19:21:56.72
輸入新時間:

C:\>
--end--
執行它=逐行在提示號後鍵入。
注意執行時會顯示指令行
你可用@去隱藏它
C:\when.bat
--sof--
@date
@time
--eof--
執行它:
--start--
C:\>when
現在日期是: 11/09/2005 Sun
輸入新日期: (dd-mm-yy)
現在時間是: 19:27:58.49
輸入新時間:

C:\>
--end--
你甚至可用@echo off來代替所有的@:
C:\when.bat
--sof--
@echo off
date
time
--eof--
執行它:
--start--
C:\>when
現在日期是: 11/09/2005 Sun
輸入新日期: (dd-mm-yy)
現在時間是: 19:30:41.05
輸入新時間:

C:\>
--end--
goto可以跳到batch的某位置:
C:\go.bat
--sof--
@echo off

:start
echo Start!
goto 4

:1
echo 1
goto 3

:2
echo 2
goto 5

:3
echo 3
goto end

:4
echo 4
goto 2

:5
echo 5
goto 1

:end
--eof--
執行…
--start--
C:\>go
Start!
4
2
5
1
3

C:\>
--end--
echo的用途是打出一些訊息
if可以做一些條件性的工作
C:\test.bat
--sof--
@echo off
if exist when.bat echo When!
--eof--
執行……
--start--
C:\>test
When!

C:\>
--end--
把剛才的when.bat刪掉
--start--
C:\>del when.bat

C:\>test

C:\>
--end--
沒有訊息出現了。
收藏收藏0 推0 噓0

分享這篇文章



把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1鑰匙
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策詐騙防範及資料調閱

Copyright © 2011-2025 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2025-12-26 04:50

回頂部