1

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

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

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

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

以防万一使用延迟扩展。

谢谢。

4

1 回答 1

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!
)
于 2012-08-01T22:28:38.060 回答