1

次のようなソースファイルがあります。

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

dos で FOR ループを使用する場合、各 PHYSICALDRIVE エントリに関連付けられた番号だけを解析して、bat ファイルで後で使用できるようにする必要があります。例: 1,0,2 および 3)

私が収集したものから、 delims= は一度に1文字しか見ません。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 に答える