我需要将程序的输出分配给使用MS批处理文件的变量。
所以在GNU Bash shell中,我将使用VAR=$(应用程序arg0 arg1)。我需要在Windows中使用批处理文件的类似行为。
比如set VAR=application arg0 arg1。
类似的问题
如何在批处理文件中将命令输出设置为变量 我如何得到一个命令的结果在一个变量在窗口? 在Windows批处理文件中使用命令的结果设置变量的值 将命令的输出设置为变量(使用管道) 将命令输出分配给批处理文件中的变量
我需要将程序的输出分配给使用MS批处理文件的变量。
所以在GNU Bash shell中,我将使用VAR=$(应用程序arg0 arg1)。我需要在Windows中使用批处理文件的类似行为。
比如set VAR=application arg0 arg1。
类似的问题
如何在批处理文件中将命令输出设置为变量 我如何得到一个命令的结果在一个变量在窗口? 在Windows批处理文件中使用命令的结果设置变量的值 将命令的输出设置为变量(使用管道) 将命令输出分配给批处理文件中的变量
当前回答
这个答案可能也有帮助:https://stackoverflow.com/a/61666083/2444948
但它实际上是在写一个文件来读取它… 代码不是我写的:
(cmd & echo.) >2 & (set /p =)<2
REM Example :
(echo foo & echo.) >2 & (set /p bar=)<2
其他回答
假设应用程序的输出是一个数字返回码,您可以执行以下操作
application arg0 arg1
set VAR=%errorlevel%
在命令行中执行以下命令时:
for /f %%i in ('application arg0 arg1') do set VAR=%%i
我得到了错误:
%%i was unexpected at this time.
为了解决这个问题,我改为使用一个%符号,就像这样:
for /f %i in ('application arg0 arg1') do set VAR=%i
简介:
在批处理文件中使用%% 在批处理文件之外使用%(在命令行上)
@OP,你可以使用for循环来捕获程序的返回状态,如果它输出的不是数字的话
/ /设置str = % myvar#: * = % / /这个替换所有“:” " " //findstr "子网掩码" my_log.txt > my_find.txt//在文件中搜索“字符串”并保存到新文件中 //“>”重制文件,如果使用“>>”添加在旧文件// im建议使用“>”
@echo off
ipconfig > my_log.txt
findstr "Subnet Mask" my_log.txt > my_find.txt
set /p myVar= < my_find.txt
echo %myVar%
set str=%myVar:*:=%
set str=%str:.= im_dot %
echo %str%
pause
除了答案之外,你不能在for循环的set部分直接使用输出重定向操作符(例如,如果你想对用户隐藏stderror输出并提供更好的错误消息)。相反,你必须用一个插入字符(^)来转义它们:
for /f %%O in ('some-erroring-command 2^> nul') do (echo %%O)
参考:重定向批处理脚本for循环中的命令输出