gpt4 book ai didi

batch-file - 如何将包含要输出的变量的命令重定向到 Windows 命令行上的变量

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

我想将运行带有参数的批处理脚本的输出分配给变量。请建议我如何做到这一点。

示例:datemath.bat %Date_Pattern% - 2的输出应该分配给一个变量。

说我的 date_pattern2013 05 03那么我的变量会出现 2013 05 01

最佳答案

通常有两种方法可以将命令的输出存储到变量中。我将假设只有一行输出被捕获。我还假设输出是标准输出,而不是标准错误。命令可以是对批处理文件的调用、对批处理文件中子例程的调用、内部命令、标准外部命令(可执行文件)或第 3 方可执行文件 - 将输出捕获到变量中的过程是一样。

1) 将输出重定向到一个临时文件,然后使用 SET/P 将值读入变量

call dateMath.bat %Date_Pattern% - 2 >output.tmp
<output.tmp set /p "result="
del output.tmp

通常,临时文件是在 %TEMP% 中创建的。文件夹,但为了简单起见,我将所有内容都保留在当前目录中。

如果可能,人们通常喜欢避免使用临时文件,尽管有时这是最好的选择。

2) 使用 FOR/F 直接捕获输出,不使用临时文件。 FOR/F 是一个复杂的命令,有很多选项。它旨在将输入解析为分隔的标记。默认分隔符是一个空格;但您希望将整个字符串捕获在一个变量中。所以你需要将分隔符设置为空。 FOR/F 可以读取文件内容、字符串或命令输出。您需要命令输出,因此应将 IN() 子句括在单引号中。 @ 符号用于抑制 SET 命令行的回显。
for /f "delims=" %A in ('dateMath.bat %Date_Pattern% - 2') do @set "result=%A"

如果要在批处理脚本中使用上述命令,则需要将 FOR 变量百分比加倍。您的脚本可能已关闭回显,因此不需要 @。
for /f "delims=" %%A in ('dateMath.bat %Date_Pattern% - 2') do set "result=%%A"

您可以采用一种完全不同的方法:修改批处理脚本以选择性地将结果直接存储在变量中。您应该阅读以下来自 DosTips.com 的优秀教程 DOS Batch - Function Tutorial该站点经常提到 DOS,但实际上它是一个专门处理 Windows 批处理脚本的站点。

关于batch-file - 如何将包含要输出的变量的命令重定向到 Windows 命令行上的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19198296/

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