BAT特殊字符
1. 點
與echo連用,作用是換行
示例1 [輸出空行]
echo.
2 > 定向符[輸出]
將命令的輸出進行重定向 [一般用於將結果寫入文件]
注意 nul 為空設備 >nul 則用於屏蔽輸出內容 [如 pause>nul]
示例2 [向1.txt中寫入字符串 wind]
echo wind>1.txt
3 >> 定向符[輸出]
將命令的輸出進行重定向 [一般用於將結果寫入文件]
注意,定向到文件時,它是在末尾追加 > 則會覆蓋
示例3 [向1.txt中追加寫入字符串 wind]
echo wind>>1.txt
4 < 定向符[輸入]
配合set /p 使用時,從指定的文件中獲取字符串 賦值給變量
示例4 [將1.txt中第1行內容賦值給變量 wind]
set /p wind=<1.txt
5 & 連接符
連接兩個命令
注意 不論前面的命令是否成功執行 后面的命令都將執行
示例5 [依次執行兩個echo 命令]
echo wind& echo snow
6 && 連接符
連接兩個命令
注意 僅當前面的命令成功執行時 后面的命令才會被執行
示例6 [echo 命令成功執行 type 命令也將被執行]
echo wind&& type 1.txt
示例7 [hello 命令執行失敗 type 命令不會被執行]
hello&& type 1.txt
7 || 連接符
連接兩個命令
注意 僅當前面的命令執行失敗時 后面的命令才會被執行
示例8 [echo 命令成功執行 type 命令不會被執行]
echo wind|| type 1.txt
示例9 [hello 命令執行失敗 type 命令將被執行]
hello|| type 1.txt
8 | 傳遞符
將前面命令的結果 傳遞給后面的命令使用 [一般用於查找]
示例10 [顯示字符串wind 並 傳遞給find 查找 關鍵字 w]
echo wind| find "w"
2,6,7,8綜合 示例11 [將字符串傳遞給find查找 並 輸出查找結果]
echo wind| find "w">nul&& echo 找到字符w|| echo 未找到字符w
9 ^ 轉義符 [脫字符]
脫去特殊符號的作用 使之成為一個純粹的符號
示例12 [輸出字符串 &&&&& ]
echo ^&^&^&^&^&
10 @ at
其作用相當於 echo off 不顯示命令本身
不同之處是@僅處理單個命令 echo off則是全局的
示例13 [命令行不會顯示]
@echo wind
11 % 百分號
兩個百分號表示取值
示例14 [顯示變量 wind 的值 smile]
set wind=smile
echo wind的值為 %wind%
注意,如果要輸出一個百分號 則在批處理中要寫成兩個
12 * 星號
通配作用
示例15 [刪除所有文本文件]
del *.txt
批處理中%cd%與%~dp0的區別
/* * directory structure * c: * -c.bat * -program * -d.bat */ /* c.bat */ call "%cd%\program\d.bat" /* d.bat */ @echo off echo cd = %cd% echo dp0 = %~dp0
直接運行d.bat,結果為
cd = C:\program
dp0 = C:\program\
直接運行c.bat,結果為
cd = C:\
dp0 = C:\program\
從上面的結果可以看出:
- 執行d.bat時,當前工作目錄為d.bat所在目錄;
- 執行c.bat時,當前工作目錄為c.bat所在目錄,即使在調用d.bat后,該工作目錄依舊是c.bat所在目錄。
問題總結
我們來重申下%~dp0和%cd%的區別,%cd%和%~dp0都能用來表示當前目錄,但是他們在不同的使用場景下,功能卻不相同:
- %cd%代表的是當前工作目錄(current working directory,variable);
- %~dp0代表的是當前批處理文件所在完整目錄(the batch file’s directory,fixed)。
從目前我們的使用情況來看,盡量使用%~dp0,不建議使用%cd%,有其他需求除外
參考:
http://www.cnblogs.com/dongzhiquan/p/6551509.html
http://freehacker.cn/developing/system/dos-current-path/?utm_source=tuicool&utm_medium=referral