是否有任何工具允许将输出重定向到 Windows *.cmd 脚本中的环境变量?

是否有任何工具允许将输出重定向到 Windows *.cmd 脚本中的环境变量?

我的意思是像这样使用它:

echo some data | this-tool-m-searching-for -vn myvariable

或者

time | this-tool-m-searching-for -vn current_time

ETC..

进而

echo %myvariable%

会产生some data等等...

这不仅仅与回声或时间有关,我指的是任何将输出到标准输出的程序。

答案1

我认为这是通常的构造:

for /F %i in ('time /t') do set current_time=%i

(通常,在命令脚本中百分号需要加倍。)

另一种结构,尽管不太好理解:

time /t > tempfile.txt
set /p current_time= < tempfile.txt

似乎没有办法避免使用临时文件;如果使用管道,set 命令将在子进程中发生。(在某些情况下,您可能能够将输出通过管道传输到批处理脚本的第二个副本,但这种事情很快就会变得很糟糕。)

额外的

为了扩展我的最后一点,为了回答评论中的一个问题,这里有一个示例批处理文件,它将输出传送到其自身的新实例中:

if "%1" NEQ "" @goto %1
:step1
time /t | %0 step2
goto :eof
:step2
set /p current_time=
echo %current_time%
rem processing here...

我认为该解决方案不适用于更复杂的批处理脚本。

答案2

尝试导出工具,它似乎正是您想要的。

相关内容