从批处理文件中的for循环获取变量值

Get variable value from for loop in batch file

我正在尝试列出以加号分隔的内联分区。下面的代码为我做了,但最后当然是最后一个加上。是否有可能删除它(最后加上)并将其保存到我以后可以在脚本中使用的变量?

@echo off
for /f "tokens=2 delims==" %%d in ('wmic logicaldisk get name /format:value') do @echo | set /p drives=%%d+

最简单的想法是使用变量,确保在开始之前未定义它,然后仅在每个驱动器盘符前加上 + 字符,如果该变量已定义。

示例:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "DriveList="
For /F Tokens^=2^ Delims^=^" %%G In ('%SystemRoot%\System32\wbem\WMIC.exe
 LogicalDisk Assoc /ResultRole:DeviceID 2^>NUL') Do If Defined DriveList (
    SetLocal EnableDelayedExpansion & For %%H In ("!DriveList!") Do EndLocal ^
    & Set "DriveList=%%~H+%%G") Else Set "DriveList=%%G"
Echo(%DriveList%
Pause

看起来您可能希望使用 Set /P 而不是 Echo(,尽管为什么您想要 C:+D:+E:+G: 这样的字符串是另一回事!