2012-08-01 31 views
1

我有一个源文件会是这个样子:DOS FOR循环 - 我可以用整个单词作为分隔符(多字符分隔符)

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

使用在DOS中循环,我需要只能解析出与稍后在bat文件中使用的每个PHYSICALDRIVE条目关联的编号。例如:1,0,2和3)

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

万一重要延迟扩张正在使用中。

谢谢。

回答

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! 
) 
+0

感谢那些做了。为了未来的灵活性,我选择了10个或更多选项。 – LabRat 2012-08-02 16:54:17