我需要将程序的输出分配给使用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批处理文件中使用命令的结果设置变量的值 将命令的输出设置为变量(使用管道) 将命令输出分配给批处理文件中的变量
当前回答
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
REM Prefer backtick usage for command output reading:
REM ENABLEDELAYEDEXPANSION is required for actualized
REM outer variables within for's scope;
REM within for's scope, access to modified
REM outer variable is done via !...! syntax.
SET CHP=C:\Windows\System32\chcp.com
FOR /F "usebackq tokens=1,2,3" %%i IN (`%CHP%`) DO (
IF "%%i" == "Aktive" IF "%%j" == "Codepage:" (
SET SELCP=%%k
SET SELCP=!SELCP:~0,-1!
)
)
echo actual codepage [%SELCP%]
ENDLOCAL
其他回答
在命令行中执行以下命令时:
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
简介:
在批处理文件中使用%% 在批处理文件之外使用%(在命令行上)
假设应用程序的输出是一个数字返回码,您可以执行以下操作
application arg0 arg1
set VAR=%errorlevel%
作为前面答案的补充,管道可以在for语句中使用,由插入符号转义:
for /f "tokens=*" %%i in ('tasklist ^| grep "explorer"') do set VAR=%%i
这个答案可能也有帮助:https://stackoverflow.com/a/61666083/2444948
但它实际上是在写一个文件来读取它… 代码不是我写的:
(cmd & echo.) >2 & (set /p =)<2
REM Example :
(echo foo & echo.) >2 & (set /p bar=)<2
我写了脚本,每5秒ping google.com,并记录当前时间的结果。在这里你可以找到变量“commandLineStr”的输出(带索引)
@echo off
:LOOPSTART
echo %DATE:~0% %TIME:~0,8% >> Pingtest.log
SETLOCAL ENABLEDELAYEDEXPANSION
SET scriptCount=1
FOR /F "tokens=* USEBACKQ" %%F IN (`ping google.com -n 1`) DO (
SET commandLineStr!scriptCount!=%%F
SET /a scriptCount=!scriptCount!+1
)
@ECHO %commandLineStr1% >> PingTest.log
@ECHO %commandLineStr2% >> PingTest.log
ENDLOCAL
timeout 5 > nul
GOTO LOOPSTART