我搜索过&在使用带有输出的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。
感谢你的帮助。
答案 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