For 循环在批处理文件中无法正常工作

For loop not working properly in batch file

我正在尝试使用此批处理文件获取当前操作系统。它是:

@echo off
for /f "skip=1 tokens=1* delims= " %%a in ('wmic path win32_operatingsystem get caption') do set _os=%%a %%b %%c %%d
echo You are running %_os%.
goto :eof

我的操作系统是 windows 7,所以我预计它会 return:

You are running Microsoft Windows 7 Ultimate.

但是 returns 你是 运行 %c %d。

Why I am getting this result?

有几种方法,Mofi 已经在上面的评论中发布了一种方法,它已经演示了使用 /value 的主要更改。您还可以使用标题本身作为变量名及其值:

@echo off
for /f "delims=" %%a in ('wmic path win32_operatingsystem get caption /value') do set %%a>nul 2>&1
echo %caption%