DOS常見命令及相關參數詳解(附示例解說及要點提示)

常用DOS命令---基礎篇

1.1 echo rem cd dir****命令

-------------------------------------------------------------------------------------------

一、顯示信息:echo

1。輸出提示信息

格式:echo 你要輸出的信息

例1
echo hello,world
echo i will come back
pause

執行顯示:
C:\bat>echo hello,world
hello,world
C:\bat>echo i will come back
i will come back
C:\bat>pause
請按任意鍵繼續. . .

不顯示寫了什么命令----echo的第二種用法

2。關閉該命令的回顯

格式:@ 放在命令前面

例2
@echo hello,world
@echo i will come back
pause

執行顯示:
hello,world
i will come back
C:\bat>pause
請按任意鍵繼續. . .
-------------------------------------------------------------------------------------------

3。打開回顯或關閉回顯功能

格式:echo [{ on|off }]
如果在批處命令前加上echo off,那么將會關閉批處中的命令回顯。要是不想顯示echo off命令本身,可以把@加在echo off前面。

例3
@echo off
echo hello,world
echo i will come back
pause

執行顯示:
hello,world
i will come back
請按任意鍵繼續. . .

在批處理前面加上@echo off ,它將使所有命令不再顯示命令本身,當然也包括了echo off 命令本身也不會回顯了。
-------------------------------------------------------------------------------------------

4。輸出空行,即相當于輸入一個回車

格式:echo.
注意命令中的“.”要緊跟在ECHO后面,中間不能有空格,否則“.”將被當作提示信息輸出到屏幕。另外“.”可以用,:;”/]+\ 這些任一符號替代。

例4
@echo off
echo 我在寫批處理教程

echo.
echo 你看到上面有空一行么?
pause

執行顯示:
我在寫批處理教程

你看到上面有空一行么?
請按任意鍵繼續. . .

命令ECHO.輸出的回車,經DOS管道轉向可以作為其它命令的輸入,比如echo.|time即相當于在TIME命令執行后給出一個回車。所以執行時系統會在顯示當前時間后,自動返回到DOS提示符狀態。
-------------------------------------------------------------------------------------------

5。答復命令中的提問

格式:ECHO 回復|命令表達式
作用:通過管道命令 | 把“回復”作為輸入傳導給后面的“命令表達式”,并作為“命令表達式”的輸入。(注意,管道命令|的輸入方法(和linux基本相同),shift鍵 \)

例5
@echo off
rd /s c:\abc
pause

執行顯示:
c:\abc, 是否確認(Y/N)?

這里abc是一個不為空的文件夾,用rd 命令刪除時它將會詢問你Y或N,要手動的輸入Y/N了。把批處改一下,這時系統將會自動幫助 把Y輸入確認了

例6
@echo off
echo Y|rd /s c:\abc
pause
-------------------------------------------------------------------------------------------

6。建立新文件或增加文件內容

格式:echo 文件內容>文件名

例7
@echo off
echo 123>myfile.txt
pause

在當前目錄下建立了一個myfile.txt文件,文件的內容為123。如果想要建立一個空的新文件,那可以試一下這個

例8
@echo off
echo. >myfile.txt
pause

注:上面所有實例中的pause是暫停命令,主要是用來暫停演示

-------------------------------------------------------------------------------------------

二、注釋語句:rem

rem 為注釋命令,一般用來給程序加上注解,該命令后的內容不被執行,但能回顯。

例1
@echo off
echo 這是例1哦!
rem 上面的echo 語句用于顯示提示。
pause

另外 :: 也可以起到 rem 的注釋作用, 而且更簡潔有效; 但有兩點需要注意!
第一, 任何以冒號:開頭的字符行,在批處理中都被視作標號, 而直接忽略其后的所有內容。
有效標號:冒號后緊跟一個以字母數字開頭的字符串,goto 語句可以識別。

無效標號:冒號后緊跟一個非字母數字的一個特殊符號,goto 無法識別的標號,可以起到注釋
作用,所以 :: 常被用作注釋符號,其實 : 也可起注釋作用。

例2
@echo off
echo 這是例2哦!
::上面的echo 語句用于顯示提示。
pause

第二, 與 rem 不同的是, :: 后的字符行在執行時不會回顯, 無論是否用echo on 打開命令行回顯狀態, 因為命令解釋器不認為他是一個有效的命令行, 因此, rem 在某些場合下比 :: 更為適用; 另外, rem 可以用于 config.sys 文件中。
-------------------------------------------------------------------------------------------

三、目錄切換:cd

1。同一個分區的切換

目錄切換格式:格式:CD [盤符][路徑]

如果當前目錄是C:\Documents and Settings\mzybar,如果要切換到同一分區下不同的目錄,請看下面的例子。(注:下面例子中的>表示命令行下的提示符,>前面的表示當前目錄。)

例1
切換到C:\WINDOWS目錄
C:\Documents and Settings\mzybar>
cd C:\WINDOWS
C:\WINDOWS>

例2
切換到C:\WINDOWS\system32目錄
C:\Documents and Settings\mzybar>
cd C:\WINDOWS\system32
C:\WINDOWS\system32>

如果當前目錄是C:\WINDOWS\system32,要返回到上一層目錄,即返回到C:\WINDOWS時,可以這樣:

例3
C:\WINDOWS\system32>
cd..
C:\WINDOWS>

也可以cd C:\WINDOWS或者C:
如果當前目錄是C:\WINDOWS\system32, 要返回根目錄,即返回到C:\時,你可以試下這個:

例4
C:\WINDOWS\system32>
cd
C:\ >

在這里返回根目錄時,用的是cd\命令,當然也可以cd c:\

在DOS命令中.、..和\都是表示相對路徑的,.是當前目錄,..是上一層目錄,而\則表示根目錄。
cd.

例5
C:\WINDOWS\system32>
cd.
C:\WINDOWS\system32>

當輸入cd.后還是在原來的位置

------------------------------------------------------------------------------------------2。不同分區的切換
格式:格式:CD /d [盤符][路徑]
如果當前目錄是C:\Documents and Settings\mzybar,需要切換到其它分區目錄

例1
切換到D:\123\abc
C:\Documents and Settings\mzybar>
cd /d d:\123\abc
D:\123\abc>

如果要切換到D盤的根目錄

例2
C:\Documents and Settings\mzybar>
D:
D:>


3。CD 的另一個用途:顯示當前的完整路徑,一般用通過 %cd% 加以引用。

例1
@echo off
echo 當前路徑是 %cd%
pause

執行顯示的是當前的完整路徑。
-------------------------------------------------------------------------------------------

四、列文件名:dir

顯示目錄中的文件和子目錄列表。
DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

? [drive:][path][filename] 指定要列出的驅動器、目錄和/或文件。

/A 顯示具有指定屬性的文件。
attributes D 目錄 R 只讀文件
H 隱藏文件 A 準備存檔的文件
S 系統文件 - 表示“否”的前綴
/B 使用空格式(沒有標題信息或摘要)。
/C 在文件大小中顯示千位數分隔符。這是默認值。用 /-C 來
停用分隔符顯示。
/D 跟寬式相同,但文件是按欄分類列出的。
/L 用小寫。
/N 新的長列表格式,其中文件名在最右邊。
/O 用分類順序列出文件。
sortorder N 按名稱(字母順序) S 按大小(從小到大)
E 按擴展名(字母順序) D 按日期/時間(從先到后)
G 組目錄優先 - 顛倒順序的前綴
/P 在每個信息屏幕后暫停。
/Q 顯示文件所有者。
/S 顯示指定目錄和所有子目錄中的文件。
/T 控制顯示或用來分類的時間字符域。
timefield C 創建時間
A 上次訪問時間
W 上次寫入的時間
/W 用寬列表格式。
/X 顯示為非 8dot3 文件名產生的短名稱。格式是 /N 的格式,
短名稱插在長名稱前面。如果沒有短名稱,在其位置則
顯示空白。
/4 用四位數字顯示年

---------------------------------------------------------------------------------------- 常用參數

1。列出c:\windows下的目錄及文件

格式:DIR [drive:][path][filename]

例1
dir c:\windows
缺點——當列表中的目錄及文件過多時就無法完全顯示,可以通過/p參數解決這個問題。
/P 在每個信息屏幕后暫停。
例2
dir /p c:\windows
在命令最后加上一個參數“/p”(即“page”頁的縮寫),列文件時就會使用分頁顯示的方式,即列出一屏的目錄及文件后,提示“按任意鍵繼續...”,按任意鍵后則顯示下一屏。這樣就可以逐屏查看了!
/B 使用空格式(沒有標題信息或摘要)。
例3
dir /b c:
在查看時,發現列出來的文件都帶有日期,時間,創建者等信息,可以在命令后加上/b參數,讓它只列出文件名稱。
-------------------------------------------------------------------------------------------

2。列出c:\下指定屬性的文件

格式:DIR /a: attributes (這里的:號可以省略)
attributes D 目錄 R 只讀文件
H 隱藏文件 A 準備存檔的文件
S 系統文件 - 表示“否”的前綴

例1
dir /a c:
列出C:\下所有的文件。

例2
dir /ah c:
列出隱含的文件(包含文件和文件夾)。

例3
dir /ad c:
列出C:\下所有的文件夾。

例4
dir /ad-h c:
列出C:\下所有的文件夾,但不包含隱含的文件夾。
-------------------------------------------------------------------------------------------

3。按分類列出c:\下的文件

格式:DIR /o: sortorder (這里的:號可以省略)
sortorder N 按名稱(字母順序) S 按大小(從小到大)
E 按擴展名(字母順序) D 按日期/時間(從先到后)
G 組目錄優先 - 顛倒順序的前綴

例1
dir /on c:
/o:排序方式 參數指定了dir命令顯示命令結果時的排序方式,排序方式設為“n”即代表按照文件名的字母順序排列
(從A~Z,以此類推)。

例2
dir /ogn c:
優先列出文件夾,并且文件夾和文件都按字母順序排列。

★“/o”和“/a”都可以省略其后的冒號“:”,但之間不能留有空格。如“/o:n”省略后的形式應為“/on”。

1.2 attrib del copy xcopy命令

-------------------------------------------------------------------------------------------

一、設置文件屬性:attrib

顯示或更改文件屬性。
ATTRIB [ R | -R] [ A | -A ] [ S | -S] [ H | -H] [[drive:] [path] filename] [/S [/D]]

? 設置屬性。

  • 清除屬性。
    R 只讀文件屬性。
    A 存檔文件屬性。
    S 系統文件屬性。
    H 隱藏文件屬性。
    [drive:][path][filename] 指定要處理的文件屬性。
    /S 處理當前文件夾及其子文件夾中的匹配文件。
    /D 也處理文件夾。
    -------------------------------------------------------------------------------------------

1。查看文件的文件屬性

格式:ATTRIB [drive:][path][filename]

例1,
attrib d:\ pagefile.sys
查看d:\ pagefile.sys文件的屬性。
-------------------------------------------------------------------------------------------

2。修改文件的屬性。

格式:attrib 屬性

例1,
attrib –h d:\ pagefile.sys
消除d:\ pagefile.sys的“隱藏”屬性。

例2,
attrib s h d:\ pagefile.sys
給d:\ pagefile.sys設置“系統”和“隱藏”屬性。
-------------------------------------------------------------------------------------------

3。批量文件處理

例1,
attrib h d:\123*.bat /s
通過/s參數可批量將d:\123及其子目錄下的所有bat文件設置為“隱藏”屬性.

例2,
attrib h d:\123 /s /d
將d:\123及其下所有同名為123的子目錄設置為“隱藏”屬性.參數/d必須在批量設置文件屬性的同時,對指定目錄及其下所有子目錄進行文件屬性操作。參數/d可以理解為“directory”(目錄),也就是說/d 必需和/s一起使用。
-------------------------------------------------------------------------------------------

備注

“attrib h d:\123 /s /d”和“attrib h d:\123*.* /s /d”的區別
前者只有d:\123以及它同名的子目錄設為了“隱藏”,而其它文件及子目錄都沒有設置“隱藏”。
后者則將d:\123下的所有文件及子目錄設置了“隱藏”屬性,但d:\123目錄沒有設置“隱藏”屬性。
-------------------------------------------------------------------------------------------

二、刪除命令:del

刪除一個或數個文件。
DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

names 指定一個或數個文件或目錄列表。通配符可被用來
刪除多個文件。如果指定了一個目錄,目錄中的所
有文件都會被刪除。

/P 刪除每一個文件之前提示確認。
/F 強制刪除只讀文件。
/S 從所有子目錄刪除指定文件。
/Q 安靜模式。刪除全局通配符時,不要求確認。
/A 根據屬性選擇要刪除的文件。
attributes R 只讀文件 S 系統文件
H 隱藏文件 A 存檔文件

-------------------------------------------------------------------------------------------

基本格式:DEL [drive:][path][filename]

例1,
del d:\123\abc.txt
刪除abc.txt
-------------------------------------------------------------------------------------------

/P 刪除每一個文件之前提示確認。

例2,
del /p d:\123*.*
刪除d:\123目錄下所有文件,如果想讓它在刪除前都詢問是否刪除,可以加上/p參數,防止誤刪除。
-------------------------------------------------------------------------------------------

/S 從所有子目錄刪除指定文件。

例3,
del /s d:\123*.*
刪除d:\123目錄及其子目錄下所有文件。通過使用/s參數后,del命令就會在指定目錄(如未指定則在當前目錄)及其子目錄中搜索所有指定文件名的文件并刪
除。
-------------------------------------------------------------------------------------------

/Q 安靜模式。刪除全局通配符時,不要求確認。

例4,
del /s /q d:\123*.*
刪除d:\123目錄及其子目錄下所有文件。
通過/q參數則無需確認直接刪除,在使用此參數時要小心!!


/Q 安靜模式。刪除全局通配符時,不要求確認。

/A 根據屬性選擇要刪除的文件。

例5,
del /ar /s d:\123*.*
刪除d:\123目錄及其子目錄下所有只讀屬性的文件。
這里 通過/a:attributes 參數對指定屬性的文件選擇刪除。文件屬性attributes,可選的有r(只讀)、s(系統)、h(隱藏)、a(存檔)。


三、復制文件:copy

Copy只能復制文件,不能復制文件夾。

1。單個文件的復制

格式:copy source[drive:][path][filename] [destination [drive:][path][filename]]
即copy 要復制的源文件(包括路徑和文件名) 文件復制的目標路徑[\文件名] [destination [drive:][path] [filename]]缺省時則為當前目錄。

例1,
copy c:\123.txt d:
把123.txt復制到d:\目錄下。如果此操作成功,命令行窗口中會提示“已復制 1個文件”。

例2,
copy c:\123.txt d:\abc.bat
把123.txt復制到d:\目錄下,并把它修改為abc.bat,這里修改了文件名和它的格式。

例3,
copy .\123
把當前目錄下的123子目錄中的文件全部拷到當前目錄。


2。批量復制文件

例1,
copy c:\123 d:\abc
將c:\123 目錄中所有文件復制到d:\abc目錄中.

例2,
copy c:\123*.rm d:\abc /y
將c:\123 目錄中所有rm格式的文件復制到d:\abc目錄中,當目標目錄中已經存在了和源目錄中即將復制的文件相同文件名的文件時,就會出現如“改寫x:\xx嗎(Yes/No/All):”這樣的提示,讓你選擇是覆蓋、不覆蓋還是全部覆蓋,通過參數/y(復制單個文件或批量復制時皆可使用),可以實現重名文件無須確認直接覆蓋。
-------------------------------------------------------------------------------------------

3。合并文件

格式:copy /b 文件1+文件2+……文件N 合并后的文件名

例1,
copy /b d:\1.mp3 d:\2.mp3 e:\3.mp3
把1.mp3和2.mp3合并成3.mp3。

例2,
copy /b d:\1.txt d:\2.mp3
把1.txt和2.mp3合并,這里沒有指定合成后的文件名哦,缺省情況下,合并后的文件名是命令中的第一個文件的名。
在這里,即把2.mp3合并進了1.txt。
-------------------------------------------------------------------------------------------

★在尾部隱藏了文本數據的圖片文件,在使用其他軟件進行編輯并保存后,隱藏的文本數據有可能會丟失。
★MP3文件在使用此方法連接后,能實現連續播放。
★合并圖片/歌曲這樣的二進制文件必須使用/b參數(b代表Binary,二進制),否則合并將會失敗;另一個合并參是/a(a代表ASCII,文本文件),只能用于純文本的合并。兩參數不能同時使用,二進制方式可以合并文本和二進制文件,而文本方式則只能合并文本。
-------------------------------------------------------------------------------------------

四、復制文件(夾):xcopy

復制文件和目錄樹。
XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]
[/EXCLUDE:file1[ file2][ file3]...]

Source
必需的。指定要復制的文件的位置和名稱。該參數必須包含驅動器或路徑。
Destination可省略。指定要復制的文件的目標。該參數可以包含驅動器盤符和冒號、目錄名、文件名或者它們的組合。如果省略 Destination,xcopy 命令將文件復制到當前目錄。
-------------------------------------------------------------------------------------------

常用的xcopy參數

/S 復制非空的目錄和子目錄。如果省略 /s,xcopy 將在一個目錄中工作。

例1,
xcopy /s d:\123 e:\kkk
復制d:\123目錄下所有文件(夾)到e:\kkk,不包括空的子目錄。(默認情況下,xcopy 不復制隱藏或系統文件)
-------------------------------------------------------------------------------------------

/E 復制所有子目錄,包括空目錄。同時使用 /e、/s 和 /t 命令行選項。

例2,
xcopy /e d:\123 e:\kkk
復制d:\123目錄下所有文件(夾)到e:\kkk,包括空的子目錄。(默認情況下,xcopy 不復制隱藏或系統文件)
-------------------------------------------------------------------------------------------

/H 復制具有隱藏和系統文件屬性的文件。默認情況下xcopy 不復制隱藏或系統文件。

例3,
xcopy /e /h d:\123 e:\kkk
復制d:\123目錄下所有文件(夾)到e:\kkk,包括空的子目錄。加上了/h參數后,xcopy 復制隱藏或系統的文件
-------------------------------------------------------------------------------------------

/T 只復制子目錄結構(即目錄樹),不復制文件。要復制空目錄,必須包含 /e 選項。
-------------------------------------------------------------------------------------------

/Y 禁止提示您確認要覆蓋現存的目標文件。
當目標目錄中已經存在了和源目錄中即將復制的文件相同文件名的時候,就會出現“改寫 X:\XXX (Yes/No/All)?”
這樣的提示,讓你選擇是覆蓋、不覆蓋還是全部覆蓋時,通過參數/y,可以實現重名文件無須確認直接覆蓋。
-------------------------------------------------------------------------------------------

★注意指定 Destination 是文件還是目錄。
如果 Destination 不包含現有目錄且不以反斜杠 () 結尾,會出現下列消息:

Does destination specify a file name
or directory name on the target
(F = file, D = directory)?

系統將會詢問你
目標 X:\XXX 是文件名還是目錄名
(F = 文件,D = 目錄)?
如果要將一個或多個文件復制到一個文件,請按 F。如果要將一個或多個文件復制到一個目錄,請按 D。
-------------------------------------------------------------------------------------------

備注

xcopy /e d:\123 e:\kkk\ 和 xcopy /e d:\123 e:\kkk 兩者之間的不同
兩者都是復制d:\123目錄下所有文件(夾)到e:\kkk,包括空的子目錄,但前者不會詢問目標e:\kkk 是文件名還是目錄名(F = 文件,D = 目錄)?

1.3 md rd ren move命令

-----------------------------------------------------------------------------------------------------------------------------------------------------------

一.創建文件夾:md

md命令用于創建文件夾,下面例子中的路徑是可以缺省的,如果缺省則在當前目錄下創建新文件夾;如果創建的新文件夾及其路徑帶有空格或特殊符號的,要用雙引號括起來。
-------------------------------------------------------------------------------------------

1.創建單個文件夾

格式:MD [路徑]目錄

例1
md d:\abc
在D盤下建立一個名為abc的文件夾。

例2
md abc
這里為缺省路徑,則在當前目錄下創建一個名為abc的文件夾。

例3
md "d:\my game"
在D盤下建立一個名為my game的文件夾。
對于新建的文件夾名稱中包含有空格或是特殊符號的,一定要用雙引號” “把文件夾名括起來。

例4
md "C:\Documents and Settings\456^ 789"
在C:\Documents and Settings下建立一個名為456^ 789的文件夾,由于路徑中有空格,所以 用雙引號" "把路徑
和文件夾名一起括起來了。
-------------------------------------------------------------------------------------------

2.同時創建多個目錄

格式:md [路徑]目錄1 [路徑]目錄2 [路徑]目錄3……

例5
md abc D:\gmae\123 abcd
在當前目錄下建立abc和abcd兩個文件,同時D:\gmae下也建立一個文件夾123。
-------------------------------------------------------------------------------------------

3.創建多級目錄

格式:md [路徑]目錄1\目錄2\目錄3\…

假如 要在D盤下建立文件夾abc,然后在abc中建新文件夾abcd,接著再在abcd中建文件夾abcde,有沒有一個命令可以
一次性創建

例6
md d:\abc\abcd\abcde
-------------------------------------------------------------------------------------------

二.刪除文件夾:rd

刪除一個目錄。
RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path

? /S 除目錄本身外,還將刪除指定目錄下的所有子目錄文件。用于刪除目錄樹。
/Q 安靜模式,帶 /S 刪除目錄樹時不要求確認
-------------------------------------------------------------------------------------------

在不加任何參數時,rd命令只能刪除空的文件夾。

例1.
rd d:\123
rd abc
第一個是刪除D盤下的空文件夾123。第二個是刪除當前目錄下的空文件夾abc。
-------------------------------------------------------------------------------------------

/S 除目錄本身外,還將刪除指定目錄下的所有子目錄和文件。用于刪除目錄樹。

例2.
rd /s d:\123
如果文件夾123不為空,則通過/S參數,可刪除文件夾123。
-------------------------------------------------------------------------------------------

/Q 安靜模式,帶 /S 刪除目錄樹時不要求確認。

例3.
rd /s /q d:\123
在使用/S參數時,系統會提示: d:\123 是否確認(Y/N 此時通過/Q參數可以使其不用詢問而直接刪除。
-------------------------------------------------------------------------------------------

三.重命名文件(夾):ren

重命名文件。
RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.

filename1的路徑可以省略,缺省情況下為當前目錄。filename2只能是文件名,不能使用任何路徑。
-------------------------------------------------------------------------------------------

1.單個文件的重命名

例1
ren d:\123.txt 456.bat
把123.txt 重命名為456并把后綴名修改為bat。

例2
ren 123.txt 456.bat
缺省路徑情況下,把當前目錄下的123.txt重命名為456.bat。
-------------------------------------------------------------------------------------------

2.批量重命名

通過和?這兩個通配符來批量重命名。表示任意多個字符,?表示一個字符。

例3
ren *.bat *.txt
把后綴名為bat的文件批量更改為txt后綴后的文件。
-------------------------------------------------------------------------------------------

四.移動文件(夾):move

移動文件并重命名文件和目錄。

要移動至少一個文件:
MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination

要重命名一個目錄:
MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2

[drive:][path]filename1 指定您想移動的文件位置和名稱。
destination 指定文件的新位置。目標可包含一個驅動器號
和冒號、一個目錄名或組合。如果只移動一個文件
并在移動時將其重命名,您還可以包括文件名。
[drive:][path]dirname1 指定要重命名的目錄。
dirname2 指定目錄的新名稱。

/Y 取消確認改寫一個現有目標文件的提示。
/-Y 對確認改寫一個現有目標文件發出提示。
-------------------------------------------------------------------------------------------

1.移動文件(夾)

基本格式:MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination

[drive:][path]filename1[,...]
想要移動的文件(夾)可以使用相對路徑,也可以使用絕對路徑,缺省路徑情況下默認為當前目錄。

Destination 只能是目錄路徑, 可以使用相對路徑,也可以使用絕對路徑,缺省路徑情況下默認為當前目錄。

例1
move d:\abc d:\abcd
如果把文件夾abc移到文件夾abcd內。

例2
move 123.txt abc
把當前目錄下的123.txt移動到當前文件夾abc內。這里都使用了相對路徑,缺省路徑情況下默認為當前目錄。

例3
move 123.txt e:\abc
把當前目錄下的123.txt移動到e:\abc目錄下。
-------------------------------------------------------------------------------------------

2.重命名文件(夾)

例4
move d:\abc d:\abcd
這里要注意一下,如果目標文件夾abcd不存在,則把abc移到d:\下,并把自身名稱更改為abcd。
利用這一特性,move命令具備重命名功能。

例5
move d:\123.txt d:\abc\456.txt
如果 456.txt存在,系統將會提示你:改寫 D:\456.txt 嗎? (Yes/No/All):
當你輸入Y后則123.txt會覆蓋456.txt。如果456.txt不存在,則把123.txt移到d:\abc目錄下,并重命名為456.txt。

例6
move /y 123.txt 456.txt
如果123.txt和456.txt都存在,通過/y參數后,系統不會提示你,而直接把123.txt覆蓋456.txt。

例7
move 123.txt e:\abc\456.txt
對于跨區移動,如果456.txt存在會提示:文件存在。命令不會執行;如果456.txt不存在,則把123.txt移到e:\abc
目錄下,并重命名為456.txt。
-------------------------------------------------------------------------------------------

MOVE命令可以跨分區移動文件,卻不可以跨分區移動文件夾。 ★對于跨分區移動文件時,如果目標位置存在和將要移動的文件同名時,系統會提示:“文件存在” 最后,命令將不會執行。 ★對于隱藏或系統屬性的文件,只有把它們的屬性去除后,move命令才會執行。

總結

對于move A B這樣的模式

1、如果A、B同為文件夾名,
①如果B存在,則把A移動到B目錄下。(如例1);
②如果B不存在,則把A移動到B所在的目錄下,同時重命名為B。(如例4)。

2、如果A為文件名,B為文件夾名,
  ① 將把A移動到B目錄下。(如例2,例3);
② 如果B文件夾內有和A文件同名的:
I A和B為同一分區,則提示:是否覆蓋/不覆蓋/全部覆蓋?
II A和B為不同分區,則提示:文件存在。不做任何操作!

3、如果A、B同為文件名,
①A和B為同一分區,如果B存在,則系統會提示你是否將把A重命名為B;如果B不存在就把A移動到B所在的目錄下
的同時,重命名 為B。(如例5);
②A和B為不同分區,如果B存在,則命令不執行;如果B不存在,則把A移動到B所在的目錄下并重命名為B。(如例

1.4 find findstr命令

-------------------------------------------------------------------------------------------

一.字符串查找:find

在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

/V 顯示所有未包含指定字符串的行。
/C 僅顯示包含字符串的行數。
/N 顯示行號。
/I 搜索字符串時忽略大小寫。
/OFF[LINE] 不要跳過具有脫機屬性集的文件。 "string" 指定要搜索的文字串,[drive:][path]filename 指定要搜索的文件。
-------------------------------------------------------------------------------------------

基本格式:find "要查找的字符串" 要查找的文件(不在當前目錄則需要給出完整路徑)

例1
find "abc" d:\abc.txt
在abc.txt中查找字符串abc的行。
-------------------------------------------------------------------------------------------

/I 搜索字符串時忽略大小寫。

例2
find /i "abc" d:\abc.txt
參數/i代表的是“Ignore”(忽略),也就是忽略大小寫。通過/I 參數可以不區分要查找的字符串“abc”的大小寫。
-------------------------------------------------------------------------------------------

/N 顯示行號。

例3
find /n "abc" d:\abc.txt
參數/n代表英語單詞“Number”(號碼).。通過/n參數 可以查找到字符串"abc"所在的行號。
-------------------------------------------------------------------------------------------

/C 僅顯示包含字符串的行數。

例4
find /c "abc" d:\abc.txt
參數/c是英語單詞“Count”(計數)的縮寫。通過/c參數 可以統計包含"abc"字符串的行數。
-------------------------------------------------------------------------------------------

/V 顯示所有未包含指定字符串的行。

例5
find /v "abc" d:\abc.txt
這個參數用于找出文件中不包含指定字符串的行。在這里表示查找不包含"abc"字符串的行。

注意:find命令中要查找的字符串一字要用雙引號" "括起來。
-------------------------------------------------------------------------------------------

二.字符串查找增強:findstr

在文件中尋找字符串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]

/B 在一行的開始配對模式。
/E 在一行的結尾配對模式。
/L 按字使用搜索字符串。
/R 將搜索字符串作為一般表達式使用。
/S 在當前目錄和所有子目錄中搜索
匹配文件。
/I 指定搜索不分大小寫。
/X 打印完全匹配的行。
/V 只打印不包含匹配的行。
/N 在匹配的每行前打印行數。
/M 如果文件含有匹配項,只打印其文件名。
/O 在每個匹配行前打印字符偏移量。
/P 忽略有不可打印字符的文件。
/OFF[LINE] 不跳過帶有脫機屬性集的文件。
/A:attr 指定有十六進位數字的顏色屬性。請見 "color /?"
/F:file 從指定文件讀文件列表 (/ 代表控制臺)。
/C:string 使用指定字符串作為文字搜索字符串。
/G:file 從指定的文件獲得搜索字符串。 (/ 代表控制臺)。
/D:dir 查找以分號為分隔符的目錄列表
strings 要查找的文字。
[drive:][path]filename 指定要查找的文件。

除非參數有 /C 前綴,請使用空格隔開搜索字符串。
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中尋找 "hello" 或
"there" 。 'FINDSTR /C:"hello there" x.y' 在文件 x.y 尋找 "hello there"。
-------------------------------------------------------------------------------------------

1.基本格式:findstr " strings " [drive:][path]filename

Strings 是要查找的內容。
[rive:][path]filename 指定要查找的文件,路徑可缺省,缺省情況下為當前目錄。

例1
findstr "icq" 123.txt
在123.txt中查找包含有“icq”這三個字符串的行。
-------------------------------------------------------------------------------------------

/I 指定搜索不分大小寫。

例2
findstr /i "MSN" 123.txt
在123.txt中查找包含有“MSN”這三個字符的行,且不區分大小寫。
-------------------------------------------------------------------------------------------

★/R 將搜索字符串作為正則表達式使用。參數/R 強調以正則表達式規則來解讀字符串。R - Right 右即為正。 都說右手是正手,因此引申為右為正,左為反。

例3
findstr /r "icq msn" 123.txt
在123.txt中查找包含有 “icq”或“msn”的行,查找的多個字符串間用空格隔格開。
-------------------------------------------------------------------------------------------

/S 在當前目錄和所有子目錄中搜索。

例4
findstr /s /i "MSN" *.txt
在當前目錄和所有子目錄中的txt文件中搜索字符串"MSN"(不區分字母大小寫)。
-------------------------------------------------------------------------------------------

/C:string 使用指定字符串作為文字搜索字符串。

例5
findstr /c:"icq msn" 123.txt
在123.txt中查找包含有 “icq msn”這幾個字符的行。注意,這里“icq msn”是一整體的。
此參數多用于查找含有空格的字符串。
-------------------------------------------------------------------------------------------

★在使用 findstr "我 你 他" test.txt 的時候,并不能查找到內容,但是,加上開關 /i 或者 /r 之后就正確無誤了,可能是在查找多個純中文字符串的時候的一個bug吧;單個的純中文字符串沒有任何問題。
-------------------------------------------------------------------------------------------

2.findstr 命令中正則表達式的用法規則

一般表達式的快速參考:
. 通配符: 任何字符

  •    重復: 以前字符或類別出現零或零以上次數
    

^ 行位置: 行的開始
$ 行位置: 行的終點
[class] 字符類別: 任何在字符集中的字符
[^class] 補字符類別: 任何不在字符集中的字符
[x-y] 范圍: 在指定范圍內的任何字符
\x Escape: 元字符 x 的文字用法
<xyz 字位置: 字的開始
xyz> 字位置: 字的結束
-------------------------------------------------------------------------------------------

● 通配符和重復符規則,即 . 和 *
通配符,即一個句點,代表任何一個字符,而且只能是一個,包括字母、數字、半角符號還有空格。重復符,即型號* 代表前面字母的出現次數(出現次數從0到多次,0表示沒有)。

findstr . 123.txt 或 findstr "." 123.txt
在文件123.txt中查找任意字符,不包括空行。

例6
findstr .* 2.txt 或 findstr ".*" 2.txt
在文件123.txt中查找任意字符,包括空行。

例7
findstr ac* 123.txt
在文件123.txt中查找出現一個“a”字符串,以及a后面出現過0次或者任意次c的字符行。
如:
a
ac
acc
addc
等都匹配。

例8
findstr ak5* 123.txt
在文件123.txt中查找出現一個“ak”字符串,以及ak后面出現過0次或者任意次5的字符行。如:
ak
ak5
akbbb
ak125
ak555
等都匹配。
-------------------------------------------------------------------------------------------

●行首、行尾符規則,即 ^ 和 $

例9
findstr "^step" 123.txt
在文件123.txt中查找行首為step字符串的行。
如:
stepkdka
step 456
這兩行都匹配的。

例10
findstr "step$" 123.txt
在文件123.txt中查找行尾為step字符串的行。
如:
123 dstep
123step
這兩行也匹配的。

例11
findstr "^step$" 123.txt
在文件123.txt中查找行首為step,且行尾也為step的行,即step獨自一行。
-------------------------------------------------------------------------------------------

● 字符集規則,即[class]

①表示含有集里的任意一個字符的即匹配。
②該字符集里的元素可以是字母和數字和一般的半角字符,如:}{ ,.][等,但雙引號"不被識別。不能是漢字, 漢字
不被正確解釋(漢字不是ASCII碼)。
如果在字符集內插入通配符和重復符號,即"[.*]"將會把. 和 *視為普通字符,沒有通配和重復的含義。

例12
findstr "[0-9]" 123.txt
在文件123.txt中查找數字0-9的任意之一的行。
如:
4kkb
1 lkka cc
這兩行都匹配。

例13
findstr "[a-zA-Z]" 123.txt
在文件123.txt中查找包括任意字母行。

例14
findstr "[abcezy]" 2.txt
在文件123.txt中查找包括a b c e z y其中任意一字母的行。

例15
findstr "[a-fl-z]" 2.txt
在文件123.txt中查找小寫字符a到f 或l到z的任意一字母的行,但不包含g h I j k這幾個字母。

例16
findstr "M[abc][123]Y" 2.txt
在文件123.txt中查找可以匹配 Ma1Y , Mb1Y, Mc1Y; Ma2Y , Mb2Y, Mc2Y; Ma3Y , Mb3Y, Mc3Y的行。
-------------------------------------------------------------------------------------------

● 減法規則,即[^class]

例17
findstr "[^0-9]" 123.txt
如果是純數字的行便過濾掉,例如2323423423 這樣的字符串被過濾,345hh888這樣的形式則過濾不了。
注意,純數字的行不能有空格,不論行首行尾或者是行中都不能有空格,否則過濾失敗!

例18
findstr "[^a-z]" 123.txt
如果是純字母的行便過濾掉,例如 sdlfjlkjlksjdklfjlskdf 這樣的字符將被過濾,如果是sdfksjdkf99999這樣的形
式則過濾不了。
注意,純字母的行不能有空格,不論行首行尾或者是行中都不能有空格,否則過濾失敗!

例19
findstr "[^add]" 123.txt
過濾僅含有由a d d三個字母組成的純字母字符串的行。
如:
a
ad
ddaadd
dd
這些行都會被過濾。
注意,僅含有由a d d三個字母組成的純字母字符串的行不能有空格,不論行首行尾或者是行中都不能有空格,否則
過濾失敗!

例20
findstr "[^echo]" 123.txt
過濾僅含有由e c h o 四個字母組成的純字母字符串的行。
如:
e
c
ec
cho
chooo
這些行都會被過濾。
-------------------------------------------------------------------------------------------

●單詞前綴后綴定位規則,即<xyz和xyz>

該xyz可以是英文單詞或數字,但不適用于漢字。符號 \ 理解為轉義符,化解小于號和大于號的重定向命令含義。
該規則是匹配類似單個英文單詞的。

例21
findstr "<echo" 123.txt
所有含有以echo為前綴的字符串的行,都匹配。
如:
echo:kkk a add
jjkk echo
這兩行都匹配。
(思考:為什么:echo也匹配?)

例22
findstr "echo>" 123.txt
所有含有以echo為后綴的字符串的行,都匹配。
如:
qq bbecho 這一行也匹配。
(思考:為什么kkkk echo:也匹配?)

例23
findstr "<end>123.txt
這里是用來精確查找單詞。查找單詞end的行,
注意:
ended
cdkend
bcd-end-jjkk
這類詞都不匹配。
(思考:為什么end echo和end也匹配?因為<xyz>格式要查找的是單個英文單詞。)
-------------------------------------------------------------------------------------------

● 轉義符 \

把表達式中的特殊字符(元字符)轉化為普通字符。常見寫法:
.
*
\
[
]??
-

例24
findstr ".abc" 123.txt
在文件123.txt中查找可以匹配“.abc”字符串的行,這里\。是把。給轉義了。

例25
findstr "1\" 123.txt 或findstr "1\\" 123.txt
在文件123.txt中查找可以匹配“1\”字符串的行,這里\是把\給轉義了。

★要查找的字符串含有\時,可以用\把\給轉義;或者把\變成\\。如果目標字符串的\后面還有內容,則搜索字符串\除了要變成\(本身的轉義要求),還可以在它后面再加一個字符,如\.

2 數個常用的網絡命令

2.1ping ipconfig arp start shutdown taskkill 命令

-------------------------------------------------------------------------------------------

一.測試IP連接:ping

用來檢查網絡是否通暢或者網絡連接速度的命令。在此, 只了解一些基本的參數就可以了。

-n count 發送count指定的Echo數據包數。
定義向目標IP發送數據包的次數,默認為4次。通過此命令可以收集到一些信息。如數據包返回的平均時間為多少,最快時間為多少,最慢時間為多少等等。
例1
C:\Documents and Settings\mzybar>ping -n 3 www.baidu.com

Pinging www.a.shifen.com [121.14.88.14] with 32 bytes of data:

Reply from 121.14.88.14: bytes=32 time=3ms TTL=57
Reply from 121.14.88.14: bytes=32 time=3ms TTL=57
Reply from 121.14.88.14: bytes=32 time=2ms TTL=57

Ping statistics for 121.14.88.14:
Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 2ms, Maximum = 3ms, Average = 2ms

分析總結

Ping statistics for 121.14.88.14:
Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
從這里可以知道在給www.baidu.com發送3個數據包的過程當中,返回了3個,沒有數據包丟失。

Approximate round trip times in milli-seconds:
Minimum = 2ms, Maximum = 3ms, Average = 2ms
這3個數據包當中返回速度最快為2ms,最慢為3ms,平均速度為2ms。

例2
ping -n 11 127.0.0.1 >nul
ping本機11次,可用于批處理延時10秒。命令中的>nul為屏蔽輸出。
簡短式可以寫成:
ping -n 11 127.1 >nul
-------------------------------------------------------------------------------------------

-w timeout 指定超時間隔,單位為毫秒。

例3
ping 1 -n 1 -w 10000 2>nul 1>nul
批處中可以用于延時10秒。
-------------------------------------------------------------------------------------------

二.查看IP配置:ipconfig

由于批處理中經常對計算機的TCP/IP 配置信息的截取,這里 只講一下/all參數就行了。

/all參數
作用:顯示所有適配器的完整 TCP/IP 配置信息。當使用IPConfig時不帶任何參數選項,那么它為每個已經配置了的接口顯示IP地址、子網掩碼和缺省網關值。

例1
C:\Documents and Settings\mzybar>ipconfig

Windows IP Configuration

Ethernet adapter 本地連接:

? Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.0.73
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.254

這里顯示的信息為:
1.計算機的本地連接名稱為:本地連接
2.本機IP為:192.168.0.73
3.子網掩碼為:255.255.255.0
4.默認網關為:192.168.0.254

例2
C:\Documents and Settings\mzybar>ipconfig /all

Windows IP Configuration

? Host Name . . . . . . . . . . . . : A-073 //計算機名稱
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter 本地連接: //計算機的本地連接名稱

? Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Realtek RTL8168/8111 PCI-E Gigabit E //網卡型號
thernet NIC
Physical Address. . . . . . . . . : 00-E0-4C-59-9B-57 //網卡的MAC地址
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.0.73 //IP地址
Subnet Mask . . . . . . . . . . . : 255.255.255.0 //子網掩碼
Default Gateway . . . . . . . . . : 192.168.0.254 //默認網關地址
DNS Servers . . . . . . . . . . . : 61.144.56.100 //主DNS地址
202.96.128.166 //副DNS地址

當ipconfig 命令帶有/all參數時將顯示所有適配器的完整 TCP/IP 配置信息,如果計算機有多個網卡時,此命令都會將它們的信息一一列出來。
-------------------------------------------------------------------------------------------

三.解析地址:arp

顯示和修改“地址解析協議 (ARP)”緩存中的項目。ARP 緩存中包含一個或多個表,它們用于存儲 IP 地址及其經過解析的以太網或令牌環物理地址。計算機上安裝的每一個以太網或令牌環網絡適配器都有自己單獨的表。
-------------------------------------------------------------------------------------------

? -a參數 或-g參數,用于查看高速緩存中的所有項目。-a和-g參數的結果是一樣的,多年來-g一直是UNIX平臺上用來顯示ARP高速緩存中所有項目的選項,而Windows用的是arp -a(-a可被視為all,即全部的意思),但它也可以接受比較傳統的-g選項。

arp -a IP
  如果 有多個網卡,那么使用arp –a 加上對應網卡的IP地址,就可以只顯示與該網卡相關的ARP緩存項目。

缺省IP情況下,將顯示所有當前 ARP 緩存表。

例1
C:\Documents and Settings\mzybar>arp -a

Interface: 192.168.0.20 --- 0x2
Internet Address Physical Address Type
192.168.0.1 00-1a-92-90-19-fe static
192.168.0.2 00-1a-92-90-19-eb static
192.168.0.3 00-1a-92-49-1c-a9 static
192.168.0.4 00-1a-92-90-19-32 static
192.168.0.5 00-1a-92-38-07-09 static
192.168.0.252 00-23-54-a9-f5-4a dynamic
192.168.0.253 00-1d-60-1d-aa-d1 dynamic
192.168.0.254 00-0a-eb-0d-96-ff dynamic

分析一下上面的數據:
Internet Address:代表 IP 地址。
Physical Address:代表網卡的物理地址,即網卡的MAC地址。
Type:代表ARP表的類型,“dynamic”為動態的;“static”為靜態的。
-------------------------------------------------------------------------------------------
  arp -s IP 物理地址
   可以向ARP高速緩存中人工輸入一個靜態項目。該項目在計算機引導過程中將保持有效狀態,或者在出現錯誤時,人工配置的物理地址將自動更新該項目。通過此命令可以實現ARP綁定。

例2
arp -s 192.168.1.1 00-1a-92-90-19-fe
對192.168.1.1添加靜態ARP實現ARP綁定。
-------------------------------------------------------------------------------------------
  arp -d IP
  使用本命令能夠人工刪除一個靜態項目。可以輸入arp -d命令,缺省IP情況下將刪除當前計算機的arp表。
在對付ARP欺騙中, 一般先刪除當前計算機的arp表,然后再實現ARP綁定。

例3
@echo off
arp –d
arp –s 192.168.0.1 00-1a-92-90-19-fe
arp –s 192.168.0.2 00-1a-92-90-19-eb
arp –s 192.168.0.3 00-1a-92-49-1c-a9
arp –s 192.168.0.4 00-1a-92-90-19-32
arp –s 192.168.0.5 00-1a-92-38-07-09
pause
-------------------------------------------------------------------------------------------

四.開啟命令:start

基本格式:start “title” filename
其中title可以省略,filename如帶有空格或是特殊符號的,用""括起來。

例1
start http://www.baidu.com
這里是打開百度,title省略了。

例2
start "" "%windir%\system32\NOTEPAD.EXE" "%userprofile%\桌面\abc.txt"
用NOTEPAD(記事本)打開 桌面上的abc.txt。

例3
start "" "%userprofile%\桌面\abc.doc"

這里start后面要加""才能啟動文件abc.doc,否則不能啟動。
如果start 后沒有 " " 則表示把title省略了,此時文件名若有""的話start就會把它看作是標題,從而變成了省略文件名,就默認開啟cmd了。所以在start后加上""就能防止這種意外的情況。
-------------------------------------------------------------------------------------------

參數/min和/max 使開啟的窗口最小化和最大化。

例4
start /min "" "%windir%\system32\NOTEPAD.EXE" "%userprofile%\桌面\abc.txt"
用記事本最小化打開桌面的abc.txt。
-------------------------------------------------------------------------------------------

五.關閉或重啟計算機:shutdown

用法: shutdown [-i | -l | -s | -r | -a][-f] [-m \computername][-t xx] [-c "comment"][-d up:xx:yy]

? 沒有參數 顯示此消息(與 ? 相同)
-i 顯示 GUI 界面,必須是第一個選項
-l 注銷(不能與選項 -m 一起使用)
-s 關閉此計算機
-r 關閉并重啟動此計算機
-a 放棄系統關機
-m \computername 遠程計算機關機/重啟動/放棄
-t xx 設置關閉的超時為 xx 秒
-c "comment" 關閉注釋(最大 127 個字符)
-f 強制運行的應用程序關閉而沒有警告
-d [u][p]:xx:yy 關閉原因代碼
u 是用戶代碼
p 是一個計劃的關閉代碼
xx 是一個主要原因代碼(小于 256 的正整數)
yy 是一個次要原因代碼(小于 65536 的正整數)
-----------------------------------------------------------------------------------------

例1
shutdown -l
該命令只能注銷本機用戶,對遠程計算機不適用。

例2
at 12:00 shutdown -s
通過-s參數,在12:00執行關閉計算機。

例3
shutdown -r -t 60
60秒后重啟計算機。這里是設置重啟倒計時為60秒。如果沒有設置時間則默認為30秒。

例4
shutdown -f -s -t 300
通過-f參數強制計算機300秒后關閉。

例5
shutdown -a
當 在遇到沖擊波或震蕩波病毒時,或是執行了上面的關機命令時, 可以運用shutdown -a 終止當前的關機進程,這樣就可以避免關機而造成的損失了。
-------------------------------------------------------------------------------------------

六.關閉指定進程taskkill

Taskkill命令可以根據進程 ID 或圖像名來結束一個或多個任務或進程。
/im ImageName
指定將終止的進程的圖像名稱。
例1
taskkill /im qq.exe
-------------------------------------------------------------------------------------------

/f process
指定將強制終止的進程。對于遠程進程可忽略此參數,所有遠程進程都將被強制終止。
例2
taskkill /f /im spoolsv.exe
-------------------------------------------------------------------------------------------

/pid process id 指定要終止的進程的PID
例3
taskkill /pid 1230 /pid 1241 /pid 1253
這里是終止PID 分別為 1230 1241 1253的進程。

2.2 數個常用的特殊符號

-------------------------------------------------------------------------------------------

一、重定向符 >、>>(和linux用法相同)

> 重定向符, 意思是傳遞并且覆蓋,它所起的作用是將運行的結果傳遞到后面的范圍(后邊可以是文件,也可以是默認的系統控制臺,即命令提示符)。

例1
echo hello120 >1.txt
新建立文件 1.txt,內容為”hello120” (注意:行尾有一空格,文件后有一空行)

例2
(echo hello120)>1.txt 新建立文件 1.txt,內容為”hello120” (注意:行尾無空格,但文件后有一空行)
>1.txt echo hello120 新建立文件 1.txt,內容為”hello120” (注意:行尾無空格,但文件后有一空行)

例3
>1.txt <nul set /p=hello120 或>1.txt set /p=hello120<nul
新建立文件 1.txt,內容為”hello120” (注意:行尾無空格,且文件后也無空行)

注意:
如果1.txt原來有內容的話,在使用了> 重定向符命令后,將會被新的內容覆蓋掉


>> 重定向符 將命令的輸出結果追加到其后面的設備中去。這個符號的作用和>有點類似,但他們是有區別的 >>是傳遞并在文件的末尾追加,而>是覆蓋。用法同>一樣的。

例1
echo hello120 >>1.txt
如果1.txt不存在,則新建立文件 1.txt,內容為”hello120 ”;如果1.txt存在,則把內容為”hello120 ”追加
到其文末尾。

例2
echo hello> 1.txt
echo world>>1.txt

這時候 1.txt內容如下:
hello
world
-------------------------------------------------------------------------------------------

二、命令管道符 |

表示把在它之前的命令或語句的執行結果作為在它之后的命令或語句的處理對象,簡而言之,就是把它之前的輸出作為它之后的輸入。

例1
tasklist | find /i "qq.exe" && taskkill /f /im qq.exe
將tasklist(進程列表)用傳遞符"|" 傳遞給find 命令,執行查找QQ的進程。

例2
echo Y|rd /s c:\abc
通過管道命令|將echo y 的結果傳給rd /s c:\abc 命令,從而達到自動輸入y 的目的。
★注意,管道命令 | 的輸入方法,shift鍵
-------------------------------------------------------------------------------------------

三、組合命令 &、&&、||

&、&&、|| 為組合命令,顧名思義,就是可以把多個命令組合起來當一個命令來執行。

&符號允許同時執行多條命令,當第一個命令執行失敗了,也不影響后邊的命令執行。這里 & 兩邊的命令是順序執行的,從前往后執行。
格式:第一條命令 & 第二條命令 [& 第三條命令...]

例1
dir z:\ & dir y:\ & dir c:
以上命令會連續顯示z,y,c 盤的內容,不理會該盤是否存在。
-------------------------------------------------------------------------------------------

&&符號允許同時執行多條命令,當碰到執行出錯的命令后將不再執行后面的命令,如果一直沒有出錯則一直執行完所有命令。
格式:第一條命令 && 第二條命令 [&& 第三條命令...]

例2
dir z:\ && dir y:\ && dir c:
這個命令和上面的類似,但區別是,前一個命令執行失敗時,后邊的命令就不會再執行了。
-----------------------------------------------------------------------------------------------------------------------------------------------------------||符號允許同時執行多條命令,當一條命令執行失敗后才執行第二條命令,當碰到執行正確的命令后將不執行后面的命令,如果沒有出現正確的命令則一直執行完所有命令。
格式:第一條命令 || 第二條命令 [|| 第三條命令...]

例3
tasklist | find /i "qq.exe" && taskkill /f /im qq.exe || echo 你開了QQ?我不信

通過&&和||兩個符號可以認為把上例分成了三個命令:
第一個命令::tasklist | find /i "qq.exe"
第二個命令:taskkill /f /im qq.exe
第三個命令:echo 你開了QQ?我不信

分析總結

如果找不到QQ進程,即第一個命令執行失敗,則 && 不會執行第二個命令:taskkill命令,由于taskkill 命令沒有執行,視作第二個命令執行失敗,則 || 將會執行第三個命令:echo 命令。如果找到QQ進程,即第一個命令執行成功,則 && 將會執行第二個命令:taskkill命令,由于第二個命令執行成功,
|| 將不會執行第三個命令:echo 命令。
-------------------------------------------------------------------------------------------

★管道命令 | | 的輸入方法,輸入兩次shift鍵
★組合命令和重定向命令、管道命令一起使用必須注意優先級。管道命令的優先級高于重定向命令,重定向命令的優先級高于組合命令。

備注
把C 盤和 D 盤的文件和文件夾列出到a.txt 文件中。

有如下命令
dir c:\ && dir d:\ > a.txt
這樣執行后a.txt 里只有D盤的信息!因為組合命令的優先級沒有重定向命令的優先級高!所以命令在執行時將被分成兩部分:dir c:\和dir d:\ > a.txt
這里要使用組合命令&&達到題目的要求, 可以這樣寫:
dir c:\ > a.txt && dir d:\ >> a.txt
這樣,依據優先級高低,DOS 將把這句話分成以下兩部分:dir c:\ > a.txt 和dir d:\ >> a.txt
當然, 也可以這樣寫:
dir c:\ > a.txt & dir d:\ >> a.txt
-------------------------------------------------------------------------------------------

四、轉義字符 ^

? 一般而言,^ 以轉義字符的身份出現。

因為在cmd環境中,有些字符具備特殊功能,如 >、>>表示重定向,| 表示管道,&、&&、|| 表示語句連接……它們都有特定的功能,如果需要把它們作為字符輸出的話,echo >、echo | ……之類的寫法就會出錯——cmd解釋器會把它們作為具有特殊功能的字符對待,而不會作為普通字符處理,這個時候,就需要對這些特殊字符做轉義處理:在
每個特殊字符前加上轉義字符^。因此,要輸出這些特殊字符,就需要用 echo ^>、echo ^|、echo ||、echo ^^……之類的格式來處理;另外,此轉義字符還可以用作續行符號。

例1
@echo off
echo 這是^
一個^
句子
Pause

轉義字符放在行尾可以起到續行符的作用的原因,因為每行末尾還有一個看不見的回車符,轉義字符位于行尾時就讓回車符失效了,從而起到了續行的作用。
-------------------------------------------------------------------------------------------

五、變量引導符 %

①當百分號成對出現,并且其間包含非特殊字符時,一般做變量引用處理,比如:%var%、%str%

例1
@echo off
set str=abc
echo 變量 str 的值是: %str%
pause

在屏幕上將顯示這樣的結果:
變量 str 的值是: abc
按任意鍵繼續...
----------------------------------------------------------------------------------------------------------------------------------------------------------

②另外,百分號作為變量引用還有一種特殊形式,那就是對形式參數的引用,此時,單個百分號后面緊跟0~9這10
個數字,如%0、%1、%2 。。。
%0 表示批處理文件本身,包括完整的路徑和擴展名
%1至%9 表示第一個參數至第九個參數

例2
@echo off
if defined str goto next
set str=
set /p str=請把文件拉到本窗口后回車:
call "%~0" %str%
pause

:next
cls
echo 本批處理文件完整路徑為:"%~0"
echo 拖到本窗口的文件完整路徑為:"%~1"
goto :eof
-------------------------------------------------------------------------------------------

③出現在 set /a 語句中時,表示兩數相除取余數,也就是所謂的模運算,它在命令行窗口和批處理文件中的寫法略有差異:在命令行窗口中,只需要單個的%,在批處理文件中,需要連續兩個百分號,寫成%%。

例如:在命令行窗口中,運行 set /a num=4%2 ,則結果將顯示0,因為4除以2的余數為0;
如果保存為批處理文件,則此語句將略有改變:

例3
@echo off
set /a num=4%%2
echo 4除以2的余數為 %num%
pause
-------------------------------------------------------------------------------------------

④轉義符號:如果要顯示%本身時,需要在前面用%來轉義。

例4
@echo off
echo 一個百分號:%%
echo 兩個百分號:%%%%
echo 三個百分號:%%%%%%
pause
-------------------------------------------------------------------------------------------

六、界定符 ""

①在表示帶有空格或特殊符號的路徑時常要用""來將路徑括起來。

例1
cd /d cd "d:\program files^%*abc"
因為路徑中帶有空格和特殊符號,所以要用""將路徑括起來。
-------------------------------------------------------------------------------------------

②表示其中的內容是一個完整的字符串。

例2
@echo off
set "var=abc 123"
echo %var%
pause

這里表示變量var的值為字符串“abc 123”。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。