【问题标题】:DOS FOR loop - Can I use an entire word as a delimiter (multi-character-delimiter)DOS FOR 循环 - 我可以使用整个单词作为分隔符(多字符分隔符)
【发布时间】:2012-08-02 06:28:38
【问题描述】:

我有一个看起来像这样的源文件:

Name                SerialNumber          
\\.\PHYSICALDRIVE1  000000002027612  
\\.\PHYSICALDRIVE0  000000002027476 
\\.\PHYSICALDRIVE2  00000000202746E  
\\.\PHYSICALDRIVE3  00000000202760E  

在 dos 中使用 FOR 循环,我需要能够解析出与每个 PHYSICALDRIVE 条目关联的数字,以便稍后在 bat 文件中使用。例如:1,0,2 和 3)

从我收集到的 delims= 一次只看一个字符。 因为我不能说 delims=PHYSICALDRIVE 并将其视为单个分隔符。 谁能举例说明如何只解析字符串末尾的数字?

以防万一使用延迟扩展。

谢谢。

【问题讨论】:

    标签: loops for-loop dos delimiter


    【解决方案1】:

    我认为任何解决方案都需要首先解析出完整的列值,然后使用 SET 搜索和替换或子字符串来解析出最后的数字。

    我假设 Name 列值中永远不能有空格。因此,默认的 FOR /F 分隔符将很容易解析出第一列。

    如果驱动器号总是小于 10 则

    for /f %%A in (yourFileName.txt) do (
      set "drive=%%A"
      set "drive=!drive:~-1!"
      echo !drive!
    )
    

    否则,如果它可以是 10 或更大,则

    for /f %%A in (yourFileName.txt) do (
      set "drive=%%~A"
      set "drive=!drive:*physicaldrive=!"
      echo !drive!
    )
    

    【讨论】:

    • 谢谢你这样做。为了未来的灵活性,我选择了 10 或更大的选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 2011-09-11
    • 2012-01-23
    • 2011-11-29
    • 2014-03-02
    • 2017-10-25
    相关资源
    最近更新 更多