0

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

磁盘:总线 0 机箱 7 磁盘 14。
状态:启用
原始容量:402.61GB
用户容量:214.29GB
伦编号:18
LUN 类型:RAID 5
热备件更换:不适用
固件:C3A8
供应商:日立
型号:HUS15604 CLAR450
绑定签名:0xcdc0
CLARiiON TLA 部件号:005049032
驱动类型:FC
当前速度:4Gbps
最高速度:4Gbps


磁盘:总线 0 机箱 7 磁盘 13。
状态:启用
原始容量:402.61GB
用户容量:214.29GB
伦编号:18
LUN 类型:RAID 5
热备件更换:不适用
固件:C3A8
供应商:日立
型号:HUS15604 CLAR450
绑定签名:0xcdc0
CLARiiON TLA 部件号:005049032
驱动类型:FC
当前速度:4Gbps
最高速度:4Gbps


磁盘:总线 0 机箱 7 磁盘 12。
状态:启用
原始容量:402.61GB
用户容量:214.29GB
伦编号:18
LUN 类型:RAID 5
热备件更换:不适用
固件:C3A8
供应商:日立
型号:HUS15604 CLAR450
绑定签名:0xcdc0
CLARiiON 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

Another variation on the theme :)

@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

你可以试试这个:

@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

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 回答