在批處理中,引號(")有時作為一個“特殊字符”的面貌出現,給批處理的編寫還會造成一定的困擾,但是它在批處理代碼編寫的過程中又起到一些不可替代的作用,下面列舉它的一些特殊使用。
1、含空格的文件名;
測試:先在F盤下新建一個文本文檔(文件名為:新建 文本文檔.txt),下面我們嘗試用批處理來調用它,在命令行下,輸入代碼:start "" f:/新建 文本文檔.txt,看看有什么提示?(會提示找不到 新建 文件),這是因為start命令在處理參數的時候,是以空格作為分隔符的,它只把"新建"作為參數傳給了start命令本身,而F盤下又并沒有這樣的文件,所以會提示找不到。那我們如何通過命令行打開象 新建 文本文檔.txt 這樣含有空格的文件呢?我們可以這么辦:把含有空格的文件名用引號括起來,如:
start "" F:/"新建 文本文檔.txt"
或者:start "" "F:/新建 文本文檔.txt"
在用批處理處理處理 含有 空格 的注冊表鍵時,有同樣的應用方式;
2、定義變量內容時,含有特殊字符;
先測試代碼:
我們可以看到,這些代碼執行有誤,原因是 > 在批處理中是作為定向符(特殊符號)的,在這里不能作為普通字符傳給變量test,如果要將它作為普通字符傳給變量test,可以有兩中辦法:一是常見的轉義(就是在特殊字符前加個 ^),二就是使用 引號,如將代碼改為以下,即可:
這種方法在傳遞用戶輸入的變量時,用途比較廣,因為你不知道用戶究竟輸沒輸入特殊字符,同時,他輸入特殊字符的時候,也不可能還專門去加個 ^ ,所以為了防止程序意外(碰到用戶輸入特殊字符時)退出,往往寫成這樣的形式(示例):
3、參數中的應用;
不管是 批處理文件 本身的參數,還是標簽的參數,他們都是以空格作為分割符的,這樣就會產生一些問題。
舉例說明,測試代碼:
以上代碼的標簽 :msg 的作用就是顯示傳給它的字符,如這里 call :msg ok,就是顯示ok(相當于echo ok),如果要顯示“我是好人”,只需要 call :msg 我是好人 即可。
但是如果要它顯示 “我是 好人”,你這樣調用:call :msg 我是 好人,顯示的結果卻是 我是,因為批處理只將空格前面的“我是”傳給標簽 msg,如果我們一定要顯示出 “我是 好人”,就要將代碼改成這樣(將 我是 好人用引號括起來):
新聞熱點
疑難解答