Я хочу поместить результат команды в мой буфер обмена.Например, моя команда - echo I love you. ,Затем я выполняю это в моем CMD:

echo I love you.|clip

Но на самом деле я получу

Я люблю тебя. [Enter]

Дополнительный символ CR в моем буфере обмена.Как этого избежать?Кроме того, я могу назначить строку «Я люблю тебя». к переменной a?Как я стараюсь:

echo I love you.|set a=

не сможет сделать это.

Может быть, я должен опубликовать два вопроса.Но эти два вопроса очень похожи.Любое тело может мне помочь?Я сейчас в Windows 10.

1 ответ1

0

Редактировать
Используйте приглашение set /p для вывода текста без добавления cr /lf, как всегда делает echo. Так:

set /P =I love you<Nul|clip

не добавит cr/lf


Захват / анализ выходных данных команды

Предположим, вы хотите получить имя хоста из этого вывода 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

Эта партия

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

Вернусь

Matar

Этот пакет сохранит все непустые выходные строки в псевдомассив var и выведет список переменных

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

Выход

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .