<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
文章進行重新排版,並做了部分補充。所有命令均在win7 x64 中文旗艦版上進行測試。
常用來代替未具體指明的檔案和資料。
用在特殊符號之前,取消特殊字元的作用.
比如:
連字元&
echo 非常^&批次處理
連字元&在此命令中只當作一個字元顯示到螢幕中,如果不加^那麼"批次處理"將被當作命令執行
| (管道)傳遞符
當然是傳遞作用,將前面一條命令的執行結果傳遞給後面一條命令繼續執行.
比如:echo 0123456 | find "123"
將0123456 傳遞給find 查詢 123
|| 連線符
當前面的命令沒有成功執行 則執行後面的命令 可以作判斷選擇用.
比如:echo 0123456 | find "789" || echo 字元中沒有789
此命令的意思是在0123456中查詢字元789,如果沒有找到則繼續執行後面的命令,
即在螢幕中顯示"字元中沒有789",如果找到了,也就是如果前面是0123456789的話則停止繼續執行||後面的命令,而是在螢幕中直接顯示"0123456789".
&& 連線符
當前面的命令成功執行 再執行後面的命令
比如:echo 0123456 | find "123" && echo 字元中含有123
這個命令跟||剛好相反.
& 連線符
無論前面的命令是否成功執行 都執行後面的
比如:echo 0123456 | find "789" & echo 字元中含有123
雖然沒有成功到789 但還是會執行echo 命令
> 定向符
將輸出的內容重定向到指定(文字中)
比如echo 123456789>1.txt
輸出字串到1.txt中
如果是 >nul 則是輸出到空裝置中 起遮蔽螢幕輸出的作用
比如pause>nul
將命令的提示遮蔽掉
>> 定向符(追加)
將輸出內容寫入指定(文字中)
注意,">“將覆蓋文字中原有內容,”>>" 則是在文字的最後新增內容. ">>"追加內容時,會先換行再追加內容。
比如
echo 123>1.txt echo 456>>1.txt
文字中有兩行 分別是 123和456
如果echo 456>1.txt
那麼 原有文字中的123將會替換成456.
< 輸入定向符
從指定的(文字)輸入內容
一般用於set /p
比如
echo 456>1.txt set /p wind=<1.txt
這樣 1.txt第一行內容就被賦值給wind了
本來set /p 這個命令是用來設定給使用者輸入字元的,但是=後用<1.txt,
意思是從1.txt檔案中讀取資訊給SET /P ,而不需要使用者輸入.
部分在命令在命令列和檔案中的寫法不同。
我對常用符號的講解做如下限定:
1、收集批次處理中經常用到的符號;
2、每個常用符號,只講述最常用的功能;深入的用法留待將來介紹;
這樣限定的原因,一是讓新手系統地接觸最常用符號的常用功能,不至於一開始就陷入技術細節中難以自拔;二是有些符號的用法非常罕見,沒有特定的需求可以忽略掉,比如控制程式碼複製符號;三是有些高深的內容本人也沒有完全消化,只解說一鱗半爪難免會誤人子弟,比如 set /a 中的^、!等符號;
一般在它之後緊跟一條命令或一條語句,則此命令或語句本身在執行的時候不會顯示在螢幕上。請把下面的程式碼儲存為test.cmd檔案,然後執行,比較一下兩條echo語句在螢幕上的輸出差異:
echo a @pause @echo b @pause
指令碼test.cmd執行結果
C:UsersjswordDesktop>echo a
a
請按任意鍵繼續. . .
百分號用在不同的場合,有不同的含義:
① 當百分號成對出現,並且其間包含非特殊字元時,一般做變數參照處理,比如:%var%、%str%。把以下程式碼儲存為批次檔,執行後觀察螢幕顯示結果:
@echo off
set str=abc
echo 變數 str 的值是: %str%
pause
在螢幕上將顯示這樣的結果:
變數 str 的值是: abc
按任意鍵繼續...
另外,百分號作為變數參照還有一種特殊形式,那就是對形式引數的參照,此時,單個百分號後面緊跟0~9這10個數位,如%0、%1,請看演示程式碼:
@echo off if defined str goto next set str= set /p str=請把檔案拉到本視窗後回車: call "%~0" %str% pause exit :next cls echo 本批次檔完整路徑為:"%~0" echo 拖到本視窗的檔案完整路徑為:"%~1" goto :eof
執行:輸入tife
請把檔案拉到本視窗後回車:tife
本批次檔完整路徑為:"C:UsersjswordDesktoptd.cmd"
拖到本視窗的檔案完整路徑為:"tife"
請按任意鍵繼續. . .
② 出現在 set /a 語句中時,表示兩數相除取餘數,也就是所謂的模運算,它在命令列視窗和批次檔中的寫法略有差異:在命令列視窗中,只需要單個的%,在批次檔中,需要連續兩個百分號,寫成%%。
例如:在命令列視窗中,執行 set /a num=4%2 ,則結果將顯示0,因為4除以2的餘數為0;如果儲存為批次檔,則此語句將略有改變:
@echo off set /a num=4%%2 echo 4除以2的餘數為 %num% pause
③ 跳脫符號:如果要顯示%本身時,需要在前面用%來跳脫。例如:
@echo off echo 一個百分號:%% echo 兩個百分號:%%%% echo 三個百分號:%%%%%% pause
④ 註釋: 2個%%間的字元若表示的不是變數參照,則當做(行間)註釋處理。
執行時註釋不顯示
@echo on %show file list% dir pause
① 以:打頭的單個的:表示該行是一個標籤,它之後的內容是一個標籤段,如:test,則表示:test之下的內容是標籤段,而test是這個標籤段的名,可以用 goto test 、goto :test 跳轉到該標籤段或用 call :test 呼叫該子過程;而連續兩個冒號打頭表示該行內容為註釋內容,實際上,:: 是個無效的標籤名,:加上空格同樣可以起到註釋的作用,此時,::的功能和註釋命令rem相同;但是,rem 註釋語句中的某些命令符號如重定向符號和管道符號還是會執行,而如果用::來註釋的時候,與::同處一行的所有命令或符號直接被命令直譯器忽略掉,無形中提高了註釋的相容性和整個程式的執行效率,並且在眾多的命令語句中更顯得醒目,所以,註釋語句推薦使用::的格式。
②在 set 語句中:和~同時使用時,: 起到擷取字串的功能。假設 set str=abcde,那麼,set var=%str:~0,1% 表示擷取字串abcde的第一個字元;和=同時使用時,起到替換字串的功能。假設:set str=abc:de,那麼,set var=%str:a=1% 則表示把字串abc:de中的a替換為1,set var=%str::=2% 則表示把字串abc:de中的:替換為2;
① 用在 set 語句中,和:同時使用時,起到擷取字串的功能,請參考上一條的解釋;
② 用在 set /a 語句中時,它是一元運運算元號,表示將運算元字按位元取反,例如,set /a num=~1的執行結果是-2,set /a num=~0的結果是-1
③ 用在for語句中,表示增強for的功能,能夠提取到更多的資訊。例如:在批次檔的for語句中:%%i表示去掉第一對外側引號,%%zi表示獲取檔案的大小(以位元組為單位),%%ni表示獲取檔名,%%xi表示獲取擴充套件名(帶點號)……它們可以組合使用,如%%~nxi表示獲取檔名和字尾名。
一般而言,>表示用新內容覆蓋原檔案內容,>>表示向原檔案追加內容,此時,它們以重定向符號的身份出現;如果用在 set /a 語句中,則>表示分組,>>表示邏輯移位;
一般而言,它以管道符號的身份出現,表示把在它之前的命令或語句的執行結果作為在它之後的命令或語句的處理物件,簡而言之,就是把它之前的輸出作為它之後的輸入,例如:echo abcd|findstr “b”,表示把echo abcd的執行結果,作為findstr “b” 的執行物件,也就是在字串abcd中查詢b字元;如果test.txt中有abcd字串,則該語句與 findstr “b” test.txt 具有同樣的效果;
一般而言,^以跳脫字元的身份出現。因為在cmd環境中,有些字元具備特殊功能,如>、>>表示重定向,|表示管道,&、&&、||表示語句連線……它們都有特定的功能,如果需要把它們作為字元輸出的話,echo >、echo | ……之類的寫法就會出錯——cmd直譯器會把它們作為具有特殊功能的字元對待,而不會作為普通字元處理,這個時候,就需要對這些特殊字元做跳脫處理:在每個特殊字元前加上跳脫字元^,因此,要輸出這些特殊字元,就需要用 echo ^>、echo ^|、echo ||、echo ^^……之類的格式來處理;
一般而言,&表示兩條命令或語句同時執行的意思。如 echo a&echo b,將在螢幕上同時顯示a和b字元。當幾條語句含義近似或作用相同且沒有先後的順序之別時,啟用&符號連線這些語句將會增加程式的可讀性;
這是一對含義截然相反的命令符,&&表示如果它之前的語句成功執行,將執行它之後的語句,而||則表示如果它之前的語句執行失敗,將執行它之後的語句;在某些場合,它們能替代 if……else…… 語句;例如:
@echo off md test&&echo 成功建立資料夾test||echo 建立資料夾test失敗 pause
效果等同於如下程式碼:
@echo off md test if "%errorlevel%"=="0" (echo 成功建立資料夾test) else echo 建立資料夾test失敗 pause
小括號對經常出現在for語句和if語句中,還有一些特定場合;在for和if語句中屬於語句格式的要求,例如:
① for %%i in (語句1) do (語句2):在這條語句中,語句1必須用括號對包圍,而語句2的括號對則可視情況予以拋棄或保留:如果語句2是單條語句或用&、&&、||等連線符號連線的多條語句,括號對可以拋棄,如果語句2是有邏輯先後關係的多條語句集合,則必須保留括號對,並且,多條語句必須斷行書寫;例如:
@echo off for %%i in (a b c) do echo %%i&echo -------- pause
也可以改寫為: @echo off for %%i in (a b c) do ( echo %%i &echo -------- ) pause
② if 條件 (語句1) else (語句2):如果沒有else部分,則語句1的括號對可有可無;如果有else部分,則語句1中的括號對必須保留,此時,語句2中的括號對保留與否,和上一點類似。例如:
@echo off if exist test.txt echo 當前目錄下有test.txt pause
@echo off if exist test.txt (echo 當前目錄下有test.txt) else echo 當前目錄下沒有test.txt pause
@echo off if exist test.txt (echo 當前目錄下有test.txt) else ( echo 當前目錄下沒有test.txt pause cls echo 即將建立test.txt檔案 cd.>test.txt&&echo 成功建立test.txt ) pause
③ 特定場合下使用括號對,不但可以使程式碼邏輯清晰,增強可讀性,還可能會減少程式碼量。比如用echo語句構造多行文字內容的時候:
@echo off ( echo 第一行 echo 第二行 echo 第三行 )>test.txt start test.txt
如果不使用括號對的話,則需要使用如下程式碼:
@echo off echo 第一行>test.txt echo 第二行>>test.txt echo 第三行>>test.txt start test.txt ::open test.txt
在 set /a 語句中,這些符號的含義分別為:加、減、乘、除。例如:set /a num=1+2-34/5。需要注意的是,這些運運算元號遵循數學運算中的優先順序順序:先乘除後加減,有括號的先算括號,並且,直接忽略小數點,因此,剛才那個算式的結果是1而不是0或0.6。
另外,有可能會在程式碼中看到這樣的寫法:set /a num+=1、set /a num-=1、set /a num=1 和 set /a num/=1,這些表示累加、累減、累乘、累除,步長都是1,展開後的完整寫法為:set /a num=num+1、set /a num=num-1、set /a num=num*1 和 set /a num=num/1(set /a 語句中,變數參照可以忽略百分號對或感嘆號對,set /a num=%num%+1 與 set /a num=num+1 等同)
這幾個命令符是if語句中常用到的數值比較符號,取自英文的關鍵字母,具體的含義為:
命令符號 含義 英文解釋 EQU 等於 equal NEQ 不等於 not equal LSS 少於 less than LEQ 少於或等於 less than or equal GTR 大於 greater than GEQ 大於或等於 greater than or equal
到此這篇關於windows中dos批次處理之命令特殊符號萬用字元與跳脫符的文章就介紹到這了,更多相關windows中dos批次處理內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45