如何避免额外的 Enter 输入

如何避免额外的 Enter 输入

我想将命令结果放入剪贴板。例如我的命令是echo I love you.。然后我在我的命令中执行此操作CMD

echo I love you.|clip

但实际上我会得到

我愛你。[進入]

我的剪贴板中多了一个 CR 字符。如何避免这种情况?此外,我可以将字符串“我爱你。”分配给变量a吗?当我尝试:

echo I love you.|set a=

将会失败。

也许我应该发布两个问题。但这两个问题非常相似。有人可以帮助我吗?我现在在用 Windows 10。

答案1

编辑
使用 set /p 提示符输出文本,而无需像 echo 一样附加 cr/lf。因此:

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 中,并列出 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

相关内容