DOS FOR循环 - 我可以使用整个单词作为分隔符(多字符分隔符)

时间:2012-08-01 21:45:35

标签: loops for-loop dos delimiter

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

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

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

从我收集的内容中,delims =一次只查看一个字符。 因为我不能说delims = PHYSICALDRIVE 并将它视为单个分隔符。 任何人都可以举例说明如何只解析字符串末尾的数字吗?

如果重要,则使用延迟扩展。

感谢。

1 个答案:

答案 0 :(得分: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!
)