从批处理文件中的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:
这样的字符串是另一回事!
我正在尝试列出以加号分隔的内联分区。下面的代码为我做了,但最后当然是最后一个加上。是否有可能删除它(最后加上)并将其保存到我以后可以在脚本中使用的变量?
@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:
这样的字符串是另一回事!