Bu ekstra giriş girişinden nasıl kaçınılır?


0

Ben panoya bir komut sonucu koymak istiyorum. echo I love you..Benimde bunu yürütürüm CMD:

echo I love you.|clip

Ama aslında alacağım

Seni seviyorum.

Panodaki ekstra bir CR karakteri. Bundan kaçınmak için nasıl? Ayrıca, "Seni seviyorum" dizesini atayabilirim. değişkene aDenedim:

echo I love you.|set a=

Bunu yapmakta başarısız olacak.

Belki iki soru göndermeliyim.Ama bu iki soru çok benzer. Herhangi bir vücut bana yardımcı olabilir? Ben şimdi Windows 10 yaşıyorum.

Yanıtlar:


0

Düzenle
Echo her zaman olduğu gibi cr / lf eklemeden metin çıktısı almak için set / p komutunu kullanın. Yani:

set /P =I love you<Nul|clip

cr / lf'yi eklemeyecek


Bir komutun yakalama / ayrıştırma çıktısı

Bu ping çıktısından ana bilgisayar adını almak istediğinizi varsayalım:

> 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

Bu toplu iş

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

Geri dönücek

Matar

Bu toplu işlem, boş olmayan tüm çıktı satırlarını bir varse sözde dizisine depolar ve varları listeler

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

Çıktı

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

Aslında bunu biliyorum ama ifade çok karmaşık, sadece echo ** sorumu taklit etmek için.
yode

Yani ilk adımı yapamazsın set love=mycommand :)
yode

Linux / Unix'te olduğu kadar kolay değil. Cmd.exe çok satırlı değişkenleri işlemez. Kullanmak zorundasın for /f bir komutun çıktısını çözümlemek ve işlemek.
LotPings

Oh, bunun için bir örnek verebilir misiniz? Cmd.exe için acemiyim. Ve ikinci sorum ne olacak? "|" Kullanabilir miyiz değişken atamak için?
yode

@ modu Bir örnek ekledim, istenirse ayrıntılı olarak açıklayacağım.
LotPings
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.