sed / Batch / Windows:防止changig反斜杠斜杠

时间:2015-05-13 14:26:31

标签: windows batch-file replace sed

我有一个带路径的变量,如下所示:

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

我有一个文件,其中有些想法就是这样写的

VAR=moresonsense

现在我想将morenonsense替换为D:\tree\path\nonsens\oink.txt。这应该是结果

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

为此,我使用sed工具进行Windows操作。但是在windows中使用sed会给我以下内容:

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

冒号和ree之间的空格是一个标签。我想,在调用sed之前我可以使用以下行修复它:

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

但不,这条线不起作用。所以我有一些问题:

  1. 是否有可能阻止sed将\ t更改为标签并防止将两个反斜杠\更改为斜杠/?

  2. 是否有另一种简单的方法可以用BATCH替换文件中的另一个字符串?

  3. 是否有人知道如何解决此问题?

1 个答案:

答案 0 :(得分:2)

你不应该\ - 逃避变量扩展中的\个实例 ;使用以下内容:

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

我不知道这是否能解决您的所有问题,但SET "somevar=%somevar:\\=\\\\%"肯定无法正常工作,因为它只会匹配两个连续{{1}在输入中使用字符,导致输入无操作。