2015-05-13 67 views
0

我有一個變量和路徑,像這樣:SED /批號/ Windows的:防止changig反斜槓削減

SET "somevar=D:\tree\path\nonsens\oink.txt" 

而且我有一個文件,其中類似這樣的somethink寫入

VAR=moresonsense 

現在我要將morenonsense替換爲D:\tree\path\nonsens\oink.txt。這應該是結果

VAR=D:\tree\path\nonsens\oink.txt 

爲此,我正在使用Windows的工具sed。但是,在Windows中使用SED給了我下面的:

VAR=D: ree/path/nonsens/oink.txt 

結腸和ree之間的空間是一個標籤。我想,我可以在調用sed之前用以下行修復它:

SET "somevar=%somevar:\\=\\\\%" 

但是不,這一行不起作用。所以,我有一些問題:

  1. 有沒有一種可能,以防止SED更改\噸至一個標籤,防止改變2反斜線\以斜線/?

  2. 是否有另一個簡單的方法來用BATCH文件中的另一個字符串替換字符串?

  3. 有人有另一個想法如何解決這個問題?

回答

2

你不應該\ -escape的\實例在變量擴展;使用以下命令:

SET "somevar=%somevar:\=\\%" 

我不知道是否可以解決所有的問題,但SET "somevar=%somevar:\\=\\\\%"絕對不工作打算,因爲它只會在輸入匹配連續\字符,導致沒有你的意見。

+0

好的,這是一個恥辱。你的建議是解決方案! – kristian