是否可以将批处理文件的语句输出设置为一个变量,例如:
findstr testing > %VARIABLE%
echo %VARIABLE%
是否可以将批处理文件的语句输出设置为一个变量,例如:
findstr testing > %VARIABLE%
echo %VARIABLE%
当前回答
FOR /F "tokens=* USEBACKQ" %%F IN (`command`) DO (
SET var=%%F
)
ECHO %var%
我总是使用USEBACKQ,这样如果要插入字符串或很长的文件名,就可以使用双引号,而不会搞砸命令。
现在,如果您的输出将包含多行,您可以这样做
SETLOCAL ENABLEDELAYEDEXPANSION
SET count=1
FOR /F "tokens=* USEBACKQ" %%F IN (`command`) DO (
SET var!count!=%%F
SET /a count=!count!+1
)
ECHO %var1%
ECHO %var2%
ECHO %var3%
ENDLOCAL
其他回答
FOR /F "tokens=* USEBACKQ" %%F IN (`command`) DO (
SET var=%%F
)
ECHO %var%
我总是使用USEBACKQ,这样如果要插入字符串或很长的文件名,就可以使用双引号,而不会搞砸命令。
现在,如果您的输出将包含多行,您可以这样做
SETLOCAL ENABLEDELAYEDEXPANSION
SET count=1
FOR /F "tokens=* USEBACKQ" %%F IN (`command`) DO (
SET var!count!=%%F
SET /a count=!count!+1
)
ECHO %var1%
ECHO %var2%
ECHO %var3%
ENDLOCAL
cd %windir%\system32\inetsrv
@echo off
for /F "tokens=* USEBACKQ" %%x in (
`appcmd list apppool /text:name`
) do (
echo|set /p= "%%x - " /text:name & appcmd.exe list apppool "%%x" /text:processModel.identityType
)
echo %date% & echo %time%
pause
我在网上找到了这条线索。归结起来就是:
@echo off
setlocal enableextensions
for /f "tokens=*" %%a in (
'VER'
) do (
set myvar=%%a
)
echo/%%myvar%%=%myvar%
pause
endlocal
您还可以将命令的输出重定向到一个临时文件,然后将该临时文件的内容放入您的变量中,如下所示。但它不支持多行输入。
cmd > tmpFile
set /p myvar= < tmpFile
del tmpFile
这要归功于汤姆硬件的帖子。
在大多数情况下,创建一个以变量名命名的临时文件可能是可以接受的。(因为你可能正在使用有意义的变量name…)
这里,我的变量名是SSH_PAGEANT_AUTH_SOCK
dir /w "\\.\pipe\\"|find "pageant" > %temp%\SSH_PAGEANT_AUTH_SOCK && set /P SSH_PAGEANT_AUTH_SOCK=<%temp%\SSH_PAGEANT_AUTH_SOCK
在一行中:
FOR /F "tokens=*" %%g IN ('your command') do (SET VAR=%%g)
命令输出将在%g中设置,然后在VAR中设置。
更多信息请访问:https://ss64.com/nt/for_cmd.html