2016-07-05 62 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