0

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

ディスク: バス 0 エンクロージャ 7 ディスク 14。
状態:有効
生容量:402.61GB
ユーザー容量:214.29GB
LUN ID:18
LUN タイプ:RAID 5
ホットスペア交換:N/A
ファームウェア:C3A8
ベンダー:日立
モデル:HUS15604 CLAR450
バインド署名:0xcdc0
CLARiX TLA パーツ番号:005049032
ドライブの種類:FC
現在の速度:4Gbps
最大速度:4Gbps


ディスク: バス 0 エンクロージャ 7 ディスク 13。
状態:有効
生容量:402.61GB
ユーザー容量:214.29GB
LUN ID:18
LUN タイプ:RAID 5
ホットスペア交換:N/A
ファームウェア:C3A8
ベンダー:日立
モデル:HUS15604 CLAR450
バインド署名:0xcdc0
CLARiX TLA パーツ番号:005049032
ドライブの種類:FC
現在の速度:4Gbps
最大速度:4Gbps


ディスク: バス 0 エンクロージャ 7 ディスク 12。
状態:有効
生容量:402.61GB
ユーザー容量:214.29GB
LUN ID:18
LUN タイプ:RAID 5
ホットスペア交換:N/A
ファームウェア:C3A8
ベンダー:日立
モデル:HUS15604 CLAR450
バインド署名:0xcdc0
CLARiX TLA パーツ番号:005049032
ドライブの種類:FC
現在の速度:4Gbps
最大速度:4Gbps

ファイルを読み込んで、次のように書きたいと思います。

ディスクの状態 Raw_Capacity User_Capacity
バス 0 エンクロージャ 7 ディスク 14。有効 402.61GB 214.29GB
バス 0 エンクロージャ 7 ディスク 13。有効 402.61GB 214.29GB
バス 0 エンクロージャ 7 ディスク 12。有効 402.61GB 214.29GB

FOR ループを使用しようとしています。どんな助けでも大歓迎です、ありがとう。

4

3 に答える 3

1

あなたはこれを試すかもしれません:

@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%a in (file) do (
    set "line=%%a"
    if /i "!line:Disk:=!" neq "!line!" <nul set/p"=!line:*Disk:=!   "
    if /i "!line:Raw=!" neq "!line!" <nul set/p"=!line:*Capacity:=! "
    if /i "!line:User=!" neq "!line!" <nul set/p"=!line:*Capacity:=!"
    if /i "!line:Maximum Speed=!" neq "!line!" echo(
)

出力は次のとおりです。

バス 0 エンクロージャ 7 ディスク 14. 402.61GB 214.29GB
バス 0 エンクロージャ 7 ディスク 13. 402.61GB 214.29GB
バス 0 エンクロージャ 7 ディスク 12. 402.61GB 214.29GB
于 2013-09-25T18:23:32.570 に答える
1

テーマの別のバリエーション:)

@echo off
setlocal enableDelayedExpansion
>output.txt (
  echo Disk            State     Raw_Capacity  User_Capacity
  for /f "tokens=1* delims=:" %%A in (input.txt) do (
    for %%V in (Disk State "Raw Capacity") do if %%~V==%%A set "%%A=%%B"
    if "%%A"=="User Capacity" echo !Disk!  !State! !Raw Capacity!              %%B
  )
)
于 2013-09-26T02:57:11.533 に答える
1

file.logここに入力ファイルがあります。Endoro のテクニックを使用しましたが、いくつかの小さな変更があります。

@echo off
setlocal enabledelayedexpansion
(
echo Disk            State     Raw_Capacity  User_Capacity
for /f "usebackq delims=" %%a in ("file.log") do (
    set "line=%%a"
    if /i "!line:Disk:=!" neq "!line!" <nul set/p"=!line:*Disk:=!   "
    if /i "!line:State=!" neq "!line!" <nul set/p"=!line:*State:=!   "
    if /i "!line:Raw=!"   neq "!line!" <nul set/p"=!line:*Capacity:=! "
    if /i "!line:User=!"  neq "!line!" <nul set/p"=!line:*Capacity:=!"&echo(
)
)>"output file.txt"
于 2013-09-26T01:22:15.640 に答える