我正在尝试将命令的输出分配给变量 - 就像在,我正在尝试将当前的flash版本设置为变量。我知道这是错的,但这是我试过的:
set var = reg query hklm \ SOFTWARE \ Macromedia \ FlashPlayer \ CurrentVersion>
或
是的,你可以看到我有点失落。任何和所有的帮助表示赞赏!reg query hklm \ SOFTWARE \ Macromedia \ FlashPlayer \ CurrentVersion>> set var
答案 0 :(得分:80)
已经设计了一种方法,但这种方式您不需要临时文件。
for /f "delims=" %%i in ('command') do set output=%%i
但是,我确信这有其自身的例外和限制。
答案 1 :(得分:9)
This post有一种方法可以实现这个目标
来自(zvrba) 您可以通过首先将输出重定向到文件来完成此操作。例如:
echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%
答案 2 :(得分:2)
您不能将进程输出直接分配给var,您需要使用For / F循环解析输出:
@Echo OFF
FOR /F "Tokens=2,*" %%A IN (
'Reg Query "HKEY_CURRENT_USER\Software\Macromedia\FlashPlayer" /v "CurrentVersion"'
) DO (
REM Set "Version=%%B"
Echo Version: %%B
)
Pause&Exit
PS:根据需要更改使用的注册码。
答案 3 :(得分:1)
好的,这里有一些更复杂的样本供 For / F
使用:: Main
@prompt -$G
call :REGQUERY "Software\Classes\CLSID\{3E6AE265-3382-A429-56D1-BB2B4D1D}"
@goto :EOF
:REGQUERY
:: Checks HKEY_LOCAL_MACHINE\ and HKEY_CURRENT_USER\
:: for the key and lists its content
@call :EXEC "REG QUERY HKCU\%~1"
@call :EXEC "REG QUERY "HKLM\%~1""
@goto :EOF
:EXEC
@set output=
@for /F "delims=" %%i in ('%~1 2^>nul') do @(
set output=%%i
)
@if not "%output%"=="" (
echo %1 -^> %output%
)
@goto :EOF
我将它打包到子函数:EXEC 中,因此所有令人讨厌的实现细节都不会破坏主脚本。 所以它得到了一些批量教程。 注释&#39;关于代码:
echo %1 -^>...
所以^使得输出a&#39;&gt;&#39;通过回声还有什么是不可能的。@if not "%output%"==""
的比较看起来像大多数常见的编程语言 - 它可能与您预期的不同(如果您不习惯MS批处理)。好吧删除&#39; @&#39;在开始。研究输出。将其更改为not %output%==""
- 重新运行并考虑为什么这不起作用。 ;)答案 4 :(得分:0)
这对我有用
@FOR /f "delims=" %i in ('reg query hklm\SOFTWARE\Macromedia\FlashPlayer\CurrentVersion') DO set var=%i
echo %var%