【Windows批處理】常用的特殊符號

@命令行回顯屏蔽符號

這個字符在批處理中的意思是關閉當前行的回顯。我們從前幾章知道
ECHO OFF可以關閉掉整個批處理命令的回顯,但不能關掉ECHO OFF這個命令,現在我們在ECHO OFF這個命令前加個@,就可以達到所有命令均不回顯的要求

%批處理變量引導符

引用變量用%var%,調用程序外部參數用%1%9
%0 - %9%*爲命令行傳遞給批處理的參數
%0 批處理文件本身,包括完整的路徑和擴展名
%1 第一個參數
%9 第九個參數
%* 從第一個參數開始的所有參數
參數%0具有特殊的功能,可以調用批處理自身,以達到批處理本身循環的目的,也可以複製文件自身等等

例如把自身 test.bat 複製到d盤命名爲 test_bak.bat

@echo off
copy %0 d:\test_bak.bat

在這裏插入圖片描述

> 、>>重定向符

>這個字符的意思是傳遞並且覆蓋,它所起的作用是將運行的結果傳遞到後面的範圍
使用命令:echo hello >1.txt將建立文件1.txt,內容爲"hello “(注意行尾有一空格)
使用命令:echo hello>1.txt將建立文件1.txt,內容爲"hello”(注意行尾沒有空格)

>>這個符號的作用和>有點類似,但他們的區別是>>是傳遞並在文件的末尾追加,而>是覆蓋

@echo off
echo hello > 1.txt
echo world >> 1.txt

在這裏插入圖片描述

| 命令管道符

將第一條命令的結果作爲第二條命令的參數來使用,命令格式格式:第一條命令 | 第二條命令 [| 第三條命令...]

@echo off
dir c:\|find "txt"

在這裏插入圖片描述
列出當前目錄,然後把結果傳給 find 命令,並發現TXT字符串

^轉義字符

^是對特殊符號<>&的前導字符,在命令中將以上3個符號的特殊功能去掉,僅僅只把它們當成符號而不使用它們的特殊意義
例如

@echo off
echo test ^> 1.txt

在這裏插入圖片描述
^這個符號還可以用作續行符號

@echo off
echo 端^
午^
快^
樂^

在這裏插入圖片描述

& 、&& 、||組合命令

&可以把多個命令組合起來當一個命令來執行,當第一個命令執行失敗了,也不影響後邊的命令執行

例如列出 z 盤 和 c 盤的目錄。因爲沒有 z 盤所以會提示找不到路徑,但列出了 c 盤目錄

@echo off
dir z:\ & dir c:\

在這裏插入圖片描述

&&用這種方法可以同時執行多條命令,當碰到執行出錯的命令後將不執行後面的命令,如果一直沒有出錯則一直執行完所有命令

@echo off
dir z:\ && dir c:\

在這裏插入圖片描述
||用這種方法可以同時執行多條命令,當一條命令失敗後才執行第二條命令,當碰到執行正確的命令後將不執行後面的命令,如果沒有出現正確的命令則一直執行完所有命令。這個很好理解。不舉例子了

注意:組合命令和重定向命令一起使用必須注意優先級
管道命令的優先級高於重定向命令,重定向命令的優先級高於組合命令

例如:把C盤和D盤的文件和文件夾列出到a.txt文件中,可能你會這樣寫

dir c:\ && dir d:\ > a.txt

執行結果是:在終端列出了 c 盤目錄,而 a.txt 中只列出了 d 盤目錄 。原因很簡單,就是因爲重定向符號>的優先級高於組合符號&&,所以先執行了dir d:\ > a.txt,然後才執行 dir c:\

要想得到正確的結果需要這樣寫

dir c:\ > a.txt && dir d:\ >> a.txt

“” 字符串界定符

雙引號允許在字符串中包含空格,進入一個特殊目錄可以用如下方法

@echo off
cd c:\"Program Files"

在這裏插入圖片描述

,逗號

逗號相當於空格,在某些情況下,可以用來當做空格使用,例如以下命令相當於dir c:\

@echo off
dir,c:\

;分號

當命令相同時,可以將不同目標用;來隔離,但執行效果不變,如執行過程中發生錯誤,則只返回錯誤報告,但程序仍會執行

例如執行dir c:\;d:\;e:\

以上命令相當於
dir c:
dir d:
dir e:\

1、如果其中 e 盤不存在,運行顯示
在這裏插入圖片描述
2、如果 e 盤存在則正常執行
3、如果運行 dir c:\;d:\1.txt,其中 d 盤存在,但1.txt 不存在,則 dir c 正常執行,最後提示

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200629085142405.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTAzNTY3Njg=,size_16,color_FFFFFF,t_70 =500x)
所以總結一下:如果目標路徑不存在,則終止執行;如果路徑存在,僅文件不存在,則繼續執行

() 括號

小括號在批處理編程中有特殊的作用,左右括號必須成對使用,括號中可以包括多行命令,這些命令將被看成一個整體,視爲一條命令行

括號在for語句和if語句中常見,用來嵌套使用循環或條件語句,其實括號()也可以單獨使用

栗子
下面兩種寫法效果一樣,這兩種寫法都被視爲是一條命令行

echo 1 & echo 2 & echo 3
(
echo 1
echo 2
echo 3
)

注意:這種多條命令被視爲一條命令行時,如果其中有變量,就涉及到變量延遲的問題

! 感嘆號

在變量延遲問題中,用來表示變量,即%var%應該表示爲!var!,之前的延遲變量講過

更多

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