2012-08-01 67 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