DOS特殊符號

1、@   命令行回顯屏蔽符 
這個字符在批處理中的意思是關閉當前行的回顯。我們從前幾課知道 
ECHO OFF 可以關閉掉整個批處理命令的回顯,但不能關掉 ECHO OFF 這個命令,現在我們在 ECHO OFF 
這個命令前加個@,就可以達到所有命令均不回顯的要求 
2、%   批處理變量引導符 
這個百分號嚴格來說是算不上命令的,它只是批處理中的參數而已(多個%一起使用的情況除外,以後還 
將詳細介紹)。 
引用變量用%var%,調用程序外部參數用%1 至%9 等等 
%0   %1   %2   %3   %4   %5   %6   %7   %8   %9   %*爲命令行傳遞給批處理的參數 
%0  批處理文件本身,包括完整的路徑和擴展名 
%1  第一個參數 
%9  第九個參數 
%*  從第一個參數開始的所有參數 
參數%0  具有特殊的功能,可以調用批處理自身,以達到批處理本身循環的目的,也可以複製文件自身等 
等。 
例:最簡單的複製文件自身的方法 
copy %0 d:\\wind.bat 
小技巧:添加行內註釋 
%註釋內容%(可以用作行內註釋,不能出現重定向符號和管道符號) 
爲什麼這樣呢?此時"註釋內容"其實被當作變量,其值是空的,故只起註釋作用,不過這種用法容易出現 
語法錯誤,一般不用。 
3、>     重定向符 
輸出重定向命令 
這個字符的意思是傳遞並且覆蓋,他所起的作用是將運行的結果傳遞到後面的範圍(後邊可以是文件,也 
可以是默認的系統控制檯) 
在 NT 系列命令行中,重定向的作用範圍由整個命令行轉變爲單個命令語句,受到了命令分隔符&,&&,|| 
和語句塊的制約限制。 
比如: 
使用命令:echo hello >1.txt 將建立文件 1.txt,內容爲"hello "(注意行尾有一空格) 
使用命令:echo hello>1.txt 將建立文件 1.txt,內容爲"hello"(注意行尾沒有空格) 
4、>>   重定向符 
輸出重定向命令 
這個符號的作用和>有點類似,但他們的區別是>>是傳遞並在文件的末尾追加,而>是覆蓋 
用法同上 
同樣拿 1.txt 做例子 

使用命令: 
echo hello > 1.txt 
echo world >>1.txt 
這時候 1.txt  內容如下: 
hello 
world 
5、<、>&、<&  重定向符 
這三個命令也是管道命令,但它們一般不常用,你只需要知道一下就 ok 了,當然如果想仔細研究的話,可 
以自己查一下資料。(本人已查過,網上也查不到相關資料) 
<,輸入重定向命令,從文件中讀入命令輸入,而不是從鍵盤中讀入。 
@echo off 
echo 2005-05-01>temp.txt 
date <temp.txt 
del temp.txt 
這樣就可以不等待輸入直接修改當前日期 
>&,將一個句柄的輸出寫入到另一個句柄的輸入中。 
<&,剛好和>&相反,從一個句柄讀取輸入並將其寫入到另一個句柄輸出中。 
常用句柄:0、1、2,未定義句柄:3—9 
1>nul  表示禁止輸出正確的信息 
2>nul  表示禁止輸出錯誤信息。 
其中的 1 與 2 都是代表某個數據流輸入輸出的地址(NT CMD  稱之爲句柄,MSDOS 稱之爲設備)。 
句柄 0:標準輸入 stdin,鍵盤輸入 
句柄 1:標準輸出 stdout,輸出到命令提示符窗口(console,代碼爲 CON) 
句柄 2:標準錯誤 stderr,輸出到命令提示符窗口(console,代碼爲 CON) 
其中的 stdin 可被<重定向,stdout 可被>、>>重定向。 
我們已經知道讀取文本中的內容可以用 for 命令,但如果只需要讀取第一行用 for 命令就有點麻煩。簡單的 
辦法如下: 
@echo off 
set /p str=<%0 
echo %str% 
pause 
運行顯示批處理文件自身的第一行:@echo off

6、|   命令管道符 
格式:第一條命令  |  第二條命令  [|  第三條命令...] 
將第一條命令的結果作爲第二條命令的參數來使用,記得在 unix 中這種方式很常見。 
例如: 
dir c:\\|find "txt" 
以上命令是:查找 C:\\所有,並發現 TXT 字符串。 
FIND 的功能請用  FIND /?  自行查看 
在不使 format 的自動格式化參數時,我是這樣來自動格式化 A 盤的 
echo y|format a: /s /q /v:system 
用過 format 的都知道,再格盤時要輸入 y 來確認是否格盤,這個命令前加上 echo y 並用|字符來將 echo y 
的結果傳給 format 命令 
從而達到自動輸入 y 的目的 
(這條命令有危害性,測試時請慎重) 
7、^   轉義字符 
^是對特殊符號<,>,&的前導字符,在命令中他將以上  3  個符號的特殊功能去掉,僅僅只把他們當成符號而 
不使用他們的特殊意義。 
比如 
echo test ^>1.txt 
結果則是:test > 1.txt 
他沒有追加在 1.txt 裏,呵呵。只是顯示了出來 
另外,此轉義字符還可以用作續行符號。 
舉個簡單的例子: 
@echo off 
echo  英雄^ 
是^ 

好^ 
男人 
pause 
不用多說,自己試一下就明白了。 
爲什麼轉義字符放在行尾可以起到續行符的作用呢?原因很簡單,因爲每行末尾還有一個看不見的符號, 
即回車符,轉義字符位於行尾時就讓回車符失效了,從而起到了續行的作用。

8、&   組合命令 
語法:第一條命令  &  第二條命令  [&  第三條命令...] 
&、&&、||爲組合命令,顧名思義,就是可以把多個命令組合起來當一個命令來執行。這在批處理腳本里是 
允許的,而且用的非常廣泛。因爲批處理認行不認命令數目。 
這個符號允許在一行中使用 2 個以上不同的命令,當第一個命令執行失敗了,也不影響後邊的命令執行。 
這裏&兩邊的命令是順序執行的,從前往後執行。 
比如: 
dir z:\\ & dir y:\\ & dir c:\\ 
以上命令會連續顯示 z,y,c 盤的內容,不理會該盤是否存在 

9、&&  組合命令 
語法:第一條命令  &&  第二條命令  [&&  第三條命令...] 
用這種方法可以同時執行多條命令,當碰到執行出錯的命令後將不執行後面的命令,如果一直沒有出錯則 
一直執行完所有命令 
這個命令和上邊的類似,但區別是,第一個命令失敗時,後邊的命令也不會執行 
dir z:\\ && dir y:\\ && dir c:\\ 

10、||   組合命令 
語法:第一條命令  ||  第二條命令  [||  第三條命令...] 
用這種方法可以同時執行多條命令,當一條命令失敗後才執行第二條命令,當碰到執行正確的命令後將不 
執行後面的命令,如果沒有出現正確的命令則一直執行完所有命令; 
提示:組合命令和重定向命令一起使用必須注意優先級 
管道命令的優先級高於重定向命令,重定向命令的優先級高於組合命令 
問題:把 C 盤和 D 盤的文件和文件夾列出到 a.txt 文件中。看例: 
dir c:\\ && dir d:\\ > a.txt 
這樣執行後 a.txt 裏只有 D 盤的信息!爲什麼?因爲組合命令的優先級沒有重定向命令的優先級高!所以這 
句在執行時將本行分成這兩部分:dir c:\\和 dir d:\\ > a.txt,而並不是如你想的這兩部分: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 
11、""   字符串界定符 
雙引號允許在字符串中包含空格,進入一個特殊目錄可以用如下方法 
cd "program files" 
cd progra~1 
cd pro* 
以上三種方法都可以進入 program files 這個目錄 

12、,  逗號 
逗號相當於空格,在某些情況下","可以用來當做空格使 
比如 
dir,c:\\ 

13、;  分號 
分號,當命令相同時,可以將不同目標用;來隔離,但執行效果不變,如執行過程中發生錯誤,則只返回 
錯誤報告,但程序仍會執行。(有人說不會繼續執行,其實測試一下就知道了) 
比如: 
dir c:\\;d:\\;e:\\;z:\\ 
以上命令相當於 
dir c:\\ 
dir d:\\ 
dir e:\\ 
dir f:\\ 
如果其中 z 盤不存在,運行顯示:系統找不到指定的路徑。然後終止命令的執行。 
例:dir c:\\;d:\\;e:\\1.txt 
以上命令相當於 
dir c:\\ 
dir d:\\ 
dir e:\\1.txt 
其中文件 e:\\1.txt 不存在,但 e 盤存在,有錯誤提示,但命令仍會執行。 
爲什麼?如果目標路徑不存在,則終止執行;如果路徑存在,僅文件不存在,則繼續執行。 

14、()  括號 
小括號在批處理編程中有特殊的作用,左右括號必須成對使用,括號中可以包括多行命令,這些命令將被 
看成一個整體,視爲一條命令行。 
括號在  for  語句和  if  語句中常見,用來嵌套使用循環或條件語句,其實括號()也可以單獨使用,請看例 
子。 
例: 
命令:echo 1 & echo 2 & echo 3 
可以寫成: 

echo 1 
echo 2 
echo 3 

上面兩種寫法效果一樣,這兩種寫法都被視爲是一條命令行。 
注意:這種多條命令被視爲一條命令行時,如果其中有變量,就涉及到變量延遲的問題。 

15、!  感嘆號 
沒啥說的,在變量延遲問題中,用來表示變量,即%var%應該表示爲!var!,請看前面的 setlocal 命令介紹。

16、批處理中可能會見到的其它特殊標記符:  (略) 
CR(0D)  命令行結束符 
Escape(1B) ANSI 轉義字符引導符 
Space(20)  常用的參數界定符 
Tab(09) ; =  不常用的參數界定符 
+ COPY 命令文件連接符 
* ?  文件通配符 
/  參數開關引導符 
:  批處理標籤引導符

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章