批次檔心得筆記





琥珀
2011-01-06, 04:44 PM
自己寫批次檔的經驗不多,常需要參考別人寫的範例,完成一些簡單的操作。經過多年的摧殘,終於略有心得,在此野人獻曝一番。

喜愛命令行、批次處理的你,歡迎分享個人的使用經驗。不過,本主題的定位,並非想當成指令索引、工具書看待,這樣會缺少樂趣。

先想一個範例心得好了,標題是「內部命令 echo 的小應用」。

===============

1. 內部命令 echo 的小應用

想產生一個 test.reg 的檔案,內容如下:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\CTF]
"Disable Thread Input Manager"=dword:00000001




自己大都是這樣寫的。

echo Windows Registry Editor Version 5.00>test.reg
echo.>>test.reg
echo [HKEY_CURRENT_USER\Software\Microsoft\CTF]>>test.reg
echo "Disable Thread Input Manager"=dword:00000001>>test.reg
echo.>>test.reg


不過,以下這種寫法也是可以的。用小括弧將 echo 命令打包,最後輸出到檔案。

(
echo Windows Registry Editor Version 5.00
echo.
echo [HKEY_CURRENT_USER\Software\Microsoft\CTF]
echo "Disable Thread Input Manager"=dword:00000001
echo.
)>test.reg


依據前一個寫法,又修改了一下。效果和前面的相同。

(
echo/Windows Registry Editor Version 5.00
echo/
echo/[HKEY_CURRENT_USER\Software\Microsoft\CTF]
echo/"Disable Thread Input Manager"=dword:00000001
echo/
)>test.reg


因為是自由格式 (free format),所以想要這樣寫也行。只有一個小地方要注意,那就是 '>' 必須和 ')' 在同一行。


( echo/Windows Registry Editor Version 5.00

echo/
echo/[HKEY_CURRENT_USER\Software\Microsoft\CTF]
echo/"Disable Thread Input Manager"=dword:00000001

echo/

) > test.reg


此外,如果想新增一個 0 位元組的檔案,可以使用以下的外部命令:

fsutil file createnew new.txt 0


用這個方法也可以達到相同的效果:

echo on 1>1.txt 2>2.txt


還有這個當然也行:

echo 1>nul 2>3.txt




琥珀
2011-02-07, 03:40 PM
2. 註解的使用

正規的使用方法:

REM comment1
Rem comment2
rem comment3


進階使用者喜歡這樣寫:

:: comment1
:: comment2
:: comment3


某些操作不想執行,但又希望保留內容:

: regsvr32 /s /u zipfldr.dll


一個「:」加上一段文字敘述,即成為一個標籤 (label),常和 if / goto 搭配使用。為了保險起見,用連續兩個「:」較好,以便區分用途。