Como evitar essa entrada extra Enter

0

Eu quero colocar um resultado de comando na minha área de transferência. Como meu comando é echo I love you. .Em seguida, eu executo isso no meu CMD :

echo I love you.|clip

Mas, na verdade, vou conseguir

I love you.[Enter]

Um caractere CR extra na minha área de transferência. Como evitar isso? Além disso, posso atribuir a string "Eu te amo". para uma variável a ? Como eu tento:

echo I love you.|set a=

não conseguirá fazê-lo.

Talvez eu deva postar duas questões. Mas essa pergunta é muito parecida. Qualquer corpo pode me ajudar? Estou no Windows 10 agora.

    
por yode 11.12.2016 / 21:33

1 resposta

0

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
    
por 11.12.2016 / 21:47