比如执行wmic ENVIRONMENT WHERE "Name='path'and UserName='<System>'" GET VariableValue会返回环境变量path的值,如何把返回值赋值给一个变量.直接set a=是不行的。
返回值赋值确实麻烦,因为有很多特殊字符。
不过,你这个例子,倒是有解。
请试试命令
echo %path%或者
set "a=%path%"我得吧这个path 变量的值赋值给 一个变量,我要用这个变量,进行其他判断什么的。
或者完整点给你说吧,我是想判断系统环境变量里面一个名字叫做“xxx”的是否存在,如果存在,我要看他的值跟一个字符串是否相等,相等就不改变他的值,不想等我就改变,如果不存在,我就新增这个名为xxx的系统变量。是这样的,但不一定是path这个特殊的,可能是其他用户添加的系统变量,比如JAVA_HOME 或者其他的。
用BAT的SET命令截取和判断字符是非常蛋疼的,劝你还是想想别的招吧。
追问其实不复杂,就是怎么得到xxx的值并赋值给a,之后我自有办法判断。这也是为什么我提问题直击重点。
追答@echo off我是将返回值写入到文件,利用for循环读出来再赋值给变量a,迂回了下
@echo off
wmic diskdrive list brief |findstr Virtual|find /v /c "">%temp%\Vitual.txt
for /f %%i in (%temp%\Vitual.txt) do set a=%%i
echo VM Disk Num is:%a%
if %a% equ 0 (echo "Physical Machine") else (echo "Virtual Machine")
pause
@ECHO OFF
FOR /f "skip=1 tokens=* delims=" %%a in ('wmic ENVIRONMENT WHERE "Name='path'and UserName='<System>'" GET VariableValue') do (
SET a=%%i)
PAUSE
其中的前面的%%a我改成了%%i,括号外我echo %a%。
运行,系统报错了