【问题标题】:Get variable value from for loop in batch file从批处理文件中的for循环获取变量值
【发布时间】:2021-11-04 09:49:44
【问题描述】:

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

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

【问题讨论】:

  • set "drives=%drives:0,-1%" 删除最后一个字符。
  • 我会提前构建字符串,而不是在循环中显示每个子字符串,然后您可以轻松拆分最后一个字符。如果你想直接在循环中做,你必须确保没有添加多余的+-signs,或者你必须用空格覆盖最后一个......

标签: for-loop batch-file variables disk wmic


【解决方案1】:

最简单的想法是使用一个变量,确保在开始之前没有定义它,然后只在每个驱动器号前面加上 + 字符,如果该变量已经定义。

例子:

@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: 这样的字符串是另一回事!

【讨论】:

  • 完美运行!语法对我来说太难了。非常感谢您的帮助。
猜你喜欢
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多