我想将命令结果放入剪贴板。例如我的命令是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