批处理脚本中从for循环取值并移除变量末尾多余加号的实现方法
解决方案
你遇到的末尾多加号的问题是因为遍历每个磁盘分区时都固定追加了加号,最后一个分区也会被加上多余的后缀,这里提供两种可直接使用的实现方案,最终结果都会存储到drives变量供后续脚本直接调用:
方案1:生成后截取多余加号(改动最小)
在你原有逻辑基础上新增一行字符串截取逻辑即可:
@echo off setlocal enabledelayedexpansion set "drives=" :: 原有遍历逻辑生成带末尾加号的分区字符串 for /f "tokens=2 delims==" %%d in ('wmic logicaldisk get name /format:value') do ( set "drives=!drives!%%d+" ) :: 移除末尾最后一个字符(多余的加号) set "drives=!drives:~0,-1!" :: 输出验证,可删除 echo 分区列表:%drives% :: 将变量带出延迟扩展作用域,供后续脚本全局调用 endlocal & set "drives=%drives%"
方案2:遍历过程中控制加号位置(无多余字符生成,更稳定)
判断是否为第一个分区,仅在非第一个分区前加加号,从根源避免末尾多余加号:
@echo off setlocal enabledelayedexpansion set "drives=" for /f "tokens=2 delims==" %%d in ('wmic logicaldisk get name /format:value') do ( if not defined drives ( :: 第一个分区直接赋值,不加前缀加号 set "drives=%%d" ) else ( :: 后续分区前追加加号 set "drives=!drives!+%%d" ) ) :: 输出验证,可删除 echo 分区列表:%drives% :: 导出变量到全局作用域 endlocal & set "drives=%drives%"
调用说明
后续脚本中直接使用%drives%即可获取类似C:+D:+E:格式的分区列表。
内容的提问来源于stack exchange,提问作者Bartosz Posiakow
相关产品推荐
相关产品推荐

