gpt4 book ai didi

batch-file - 将命令的输出设置为变量(使用管道)

转载 作者:行者123 更新时间:2023-12-02 18:39:18 27 4
gpt4 key购买 nike

可以使用管道将命令的输出重定向到变量吗?

我没有尝试太多,因为我想不出什么可以尝试,但我尝试了一种方法(有两种变体)...

例如:

echo Hello|set text=

没用,也没有:

echo Hello | set text=

我知道您可以使用 FOR 轻松完成此操作命令,但我认为用管道看起来会“更好”。

如果您想知道,我没有具体的原因问这个问题,只是我很好奇并且找不到答案。

最佳答案

你的方法行不通有两个原因。

您需要使用set/p text=通过用户输入设置变量。
另一个问题是管道。
管道启动两个异步 cmd.exe 实例,并在完成作业后关闭两个实例。

这就是为什么看起来变量没有设置的原因,但是一个小例子显示它们被设置了,但结果后来丢失了。

set myVar=origin
echo Hello | (set /p myVar= & set myVar)
set myVar

输出

Hello
origin

替代方案:您可以使用 FOR 循环将值放入变量或临时文件中。

for /f "delims=" %%A in ('echo hello') do set "var=%%A"
echo %var%

>output.tmp echo Hello
>>output.tmp echo world

<output.tmp (
set /p line1=
set /p line2=
)
echo %line1%
echo %line2%

用宏替代:

您可以使用批处理宏,这有点像 bash 的等效项

@echo off

REM *** Get version string
%$set% versionString="ver"
echo The version is %versionString[0]%

REM *** Get all drive letters
`%$set% driveLetters="wmic logicaldisk get name /value | findstr "Name""
call :ShowVariable driveLetters

宏的定义可以在
找到 SO:Assign output of a program to a variable using a MS batch file

关于batch-file - 将命令的输出设置为变量(使用管道),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14952295/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com