EDit
Use o prompt set / p para enviar texto sem acrescentar cr / lf como o echo sempre faz. Então:
set /P =I love you<Nul|clip
não adicionará o cr / lf
Captura / análise de saída de um comando
Suponha que você queira obter o nome do host desta saída de ping:
> ping -4 -n 1 -a 127.0.0.1
Pinging Matar [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Ping statistics for 127.0.0.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
Este lote
For /f "tokens=2delims=[ " %%A in (
'ping -n 1 -a 127.0.0.1^|find "["'
) do Echo %%A
retornará
Matar
Esse lote armazenará todas as linhas de saída não vazias em um pseudo array var e listará as vars
@Echo off & Setlocal EnableDelayedExpansion
Set Cnt=100
For /f "delims=" %%A in ('Ping -4 -n 1 -a 127.0.0.1') Do (
Set /A Cnt+=1
Set a[!Cnt:~-2!]=%%A
)
Set a[
Saída
a[01]=Ping wird ausgeführt für Matar [127.0.0.1] mit 32 Bytes Daten:
a[02]=Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
a[03]=Ping-Statistik für 127.0.0.1:
a[04]= Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0
a[05]= (0% Verlust),
a[06]=Ca. Zeitangaben in Millisek.:
a[07]= Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms