是否可以将批处理文件的语句'的输出设置为一个变量,例如。
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
我在互联网上发现了这个主题。归纳起来就是。
@echo off
setlocal enableextensions
for /f "tokens=*" %%a in (
'VER'
) do (
set myvar=%%a
)
echo/%%myvar%%=%myvar%
pause
endlocal
你也可以把一个命令的输出重定向到一个临时文件,然后把这个临时文件的内容放到你的变量中,就像uchashereby。
cmd > tmpFile
set /p myvar= < tmpFile
del tmpFile
归功于Tom's Hardware上的线程。
我已经这样测试过了,很有效。
SET /P Var= | Cmd
通过将命令输送到一个变量中,prompt将把命令"Cmd
"的结果插入到变量"Var
"中。
更新:
不起作用,我的错,我做的脚本是这样的。
SET /P Var= | dir /b *.txt
echo %Var%
实际上,它显示的是比方说"test.txt
",但实际上它显示的是"dir /b *.txt
"命令的结果,而不是echo %var%
。我被弄糊涂了,因为两个输出都是一样的。