我試圖創建一個批處理字符串是這樣的:> abcd_批次字符串連接
我有一個名爲soeid變量,以價值爲abcd。所以這就是我所做的,但它不起作用。
set soeid=abcd
set "val1=>"
set "val2=_"
set "str=%val1%%soeid%%val2%"
echo %str%
我試圖創建一個批處理字符串是這樣的:> abcd_批次字符串連接
我有一個名爲soeid變量,以價值爲abcd。所以這就是我所做的,但它不起作用。
set soeid=abcd
set "val1=>"
set "val2=_"
set "str=%val1%%soeid%%val2%"
echo %str%
我相信它工作得很好。爲了證明它,在定義該值後添加SET STR
,您將看到正確的值。
您遇到的問題是當您嘗試回顯該值時,正在執行的行變爲:echo >abcd_
。該>
沒有引用或轉義,所以它是簡單地把ECHO的輸出中不帶任何參數,並將其重定向到一個名爲「abcd_」
文件如果你不介意看到報價,然後更改您的線路以echo "%str%"
和它會工作。
另一種選擇是啓用和使用延遲擴展(我假設這是一個批處理腳本代碼,而不是在命令行上執行)
setlocal enableDelayedExpansion
set soeid=abcd
set "val1=>"
set "val2=_"
set "str=%val1%%soeid%%val2%"
echo !str!
普通%var%
膨脹發生早上,而解釋器正在解析該行。延遲!var!
擴展發生在執行前的最後。重定向在中間的某處被檢測到。這就是正常擴展不起作用的原因 - 解釋器看到擴展的>
字符並將其解釋爲輸出重定向操作符。延遲擴展隱藏解釋器中的>
字符,直到解析重定向爲止。
有關延遲擴展的更多信息,請從命令行輸入SET /?
,並從以「最後支持延遲的環境變量擴展......」開頭的段落開始閱讀。
非常感謝,現在它工作得很好。問題是我用echo%str%而不是!str !.請你能向我解釋兩者之間的區別。 – NewQueries 2012-02-22 20:25:04
@ NewQueries-我用解釋擴展了我的答案 – dbenham 2012-02-22 20:40:59
你應該在「不起作用」之後鍵入的第一件事是解釋* how *不起作用。我們無法閱讀您的想法或從這裏看到您的屏幕;我們所要做的就是你在問題中告訴我們的東西。如果您需要幫助,您需要告訴我們您遇到的問題,以及您嘗試的方法無效。 – 2012-02-22 20:19:10