Come evitare quell'input aggiuntivo


0

Voglio mettere un risultato del comando nei miei appunti. Così com'è il mio comando. echo I love you.Quindi eseguo questo nel mio CMD:

echo I love you.|clip

Ma in realtà ci riuscirò

Ti amo. [Enter]

Un carattere CR aggiuntivo negli appunti. Come evitarlo? Inoltre, posso assegnare la stringa "Ti amo". a una variabile a? Mentre provo:

echo I love you.|set a=

non riuscirà a farlo.

Forse dovrei pubblicare due domande, ma queste due domande sono molto simili: qualsiasi corpo può aiutarmi? Sono in Windows 10 ora.

Risposte:


0

Modifica
Utilizzare il prompt set / p per generare il testo senza aggiungere cr / lf come fa sempre l'eco. Così:

set /P =I love you<Nul|clip

non aggiungerà il cr / lf


Cattura / analizza l'output di un comando

Supponiamo di voler ottenere il nome host da questo output 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

Questo lotto

For /f "tokens=2delims=[ " %%A in (
  'ping -n 1 -a 127.0.0.1^|find "["'
) do Echo %%A

Tornerà

Matar

Questo batch memorizzerà tutte le righe di output non vuote in una pseudo matrice var ed elencherà le variabili

@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[

Produzione

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

In realtà lo so, ma l'espressione è molto complessa, lo uso solo echo **per simulare la mia domanda.
yode

Voglio dire che non puoi fare il primo passo set love=mycommand:)
yode

Non così facile come in Linux / Unix. Cmd.exe non gestisce i var multilinea. Devi usare for /fper analizzare l'output di un comando ed elaborarlo.
LotPings,

Oh, ti dispiacerebbe fare un esempio per questo? Sono un principiante per cmd.exe. E la mia seconda domanda? Possiamo usare "|" assegnare una variabile?
yode

@yode Ho aggiunto un campione, se richiesto lo spiegherò in dettaglio.
LotPings,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.