2016-07-05 76 views
1

这是xml文件使用“!”读取和写入XML文件性格

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 

我用这个代码读取和写入文件

for /f "usebackq delims=" %%a in (%CONF_DIR%\process-conf.xml) do (
    echo %%a) 

这就是结果当我写一个新的文件

<//www.springframework.org/dtd/spring-beans.dtd"> 

我猜“ !”是特殊的人物,任何人都知道如何做到这一点?我花了这么多时间来做这件事。

+1

它与Salesforce的关系如何?似乎,您已附上错误的标记 –

+1

您是否启用了[延迟扩展](http://ss64.com/nt/delayedexpansion.html)?你需要在扩展'for'变量'%% a'时禁用它,否则任何'!'都会被延迟扩展功能消耗... – aschipfl

+2

不要批量执行。使用XML解析器。 '<!'在'XML'中有特殊的含义 - 这只是你可以在其中绊倒的许多方法之一。概述你想要完成的事情,我们可以给你一个更好的解决方案。 – Sobrique

回答

0

当您使用for循环参数时,您需要禁用延迟扩展。
如果您需要延迟扩展,您可以切换它。

setlocal DisableDelayedexpansion 
for /f "usebackq delims=" %%a in (%CONF_DIR%\process-conf.xml) do (
    set "line=%%a" -- Here the delayed expansion have to be disabled 
    setlocal EnableDelayedexpansion 
    rem here you can use delayed expansion again 
    echo(!line! 
    endlocal 
) 
+0

谢谢,这是工作。 – Kai