批量输出到文件的换行符

时间:2013-12-22 16:13:49

标签: batch-file

我搜索过&在使用带有输出的Batchfile时尝试了几个小时来获取换行符 - >文件。

我是批处理程序的新手,需要一些帮助。所以这是我的问题:

我想要的是什么:

我有一个批处理,用于ping特定服务器并将结果写入" xml"格式。这种格式不是真正的xml - 它是第二个应用程序(LCDHost)理解的一种XML。 最终文件应包含:

<host>myhost2ping.com</host> 
<date>22.12.2013</date> 
<time>17:03:25,55</time> 
<ping>36</ping>

获取此LCDHost时,可以读取此文件并在外部LCD中显示结果(我的情况下是G19键盘)。

我真正得到的是什么:

<host>myhost2ping.com</host> <date>22.12.2013</date> <time>17:03:25,55</time> <ping>    Minimum = 36ms</ping>

我的批次:

:begin

for /f "delims=," %%a in ('ping -n 1 myhost2ping.com') do @echo ^<host^>myhost2ping.com^</host^> ^<date^>%DATE%^</date^> ^<time^>%TIME%^</time^> ^<ping^>%%a^</ping^> > ping.txt

TIMEOUT /T 60
goto :begin

我已尝试过的内容:

所有版本的&amp;回声。 将^设置为Var / n,/ c / n,/ r / n

我需要什么:

每个节点......在他自己的行中 最后一个条目应该只剪切到ms:

从最小值= 36ms到36。

感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

这是使用您的代码的另一种方法:

:begin

(for /f "delims=," %%a in ('ping -n 1 myhost2ping.com') do (
   echo ^<host^>myhost2ping.com^</host^>
   echo ^<date^>%DATE%^</date^>
   echo ^<time^>%TIME%^</time^>
   echo ^<ping^>%%a^</ping^>
)) > ping.txt

TIMEOUT /T 60
goto :begin

答案 1 :(得分:0)

试试这个:

@echo off
setlocal EnableDelayedExpansion
set NL=^


REM the two empty lines above are required!

:begin

for /f "delims=," %%a in ('ping -n 1 www.google.de^|find "Minimum"') do ( set t=%%a )
rem it's easier to work with the variable outside the for-block:
set "t=%t: =%"         :: remove spaces
set "t=%t:Minimum=%"   :: remove Minimum
set "t=%t:ms=%"        :: remove ms
set "t=%t:~1%"         :: remove first char (equal sign)

@echo ^<host^>myhost2ping.com^</host^>!NL!^<date^>%DATE%^</date^>!NL!^<time^>%TIME

%^</time^>!NL!^<ping^>%t%^</ping^> > ping.txt
timeout /t 6
goto :begin