我正在为我管理的设备编写运行状况检查脚本。下面给出的输出是列出我管理的每个设备的命令。对于每个设备列表,我想运行某些健康检查命令并检查每个设备的状态。输入的格式如下所示。我想选择第一个单词,它将是盒子的序列号。由于这些设备是从windows box管理的,所以需要创建批处理文件。
==================================================================
C:\Documents和Settings\server>symcfg列表
S Y M M E T R I X
Mcode Cache Num Phys Num Symm
SymmID Attachment Model Version Size (MB) Devices Devices
000192xxxxxx Local VMAX-1 5876 24064 9 1055
000192xxxxxx Local VMAX-1 5876 12032 7 379
000192xxxxxx Local VMAX-1 5876 24064 9 661
000192xxxxxx Local VMAX20K 5876 36096 17 258=============================================================================
我只想从"SymmID“列中选择每个序列号,然后将每个序列号传递给一个for循环,该循环将运行一些用于健康检查的命令。
任何帮助都是非常感谢的。
发布于 2014-05-29 17:00:43
您只需要跳过前5个标题行,然后处理其余的内容:
@echo off
for /F "skip=5" %%a in ('symcfg list') do echo %%a以空格分隔的第一个令牌(默认行为)被分配给%%a。
发布于 2014-05-29 16:36:18
@echo off
setlocal enableextensions
for /f %%a in (
'symcfg list ^| findstr /r /c:"^[0-9]"'
) do (
echo %%a
)
endlocal执行命令,过滤行以仅检索包含所需数据的行(包含的样本中以数字开头的行)。for命令将使用空格对字符串进行标记(默认行为),检索行中的第一个标记。
发布于 2014-05-29 16:28:23
@echo off
set "file=C:\Documents and Settings\server>symcfg list"
set /A i=0
for /F "usebackq delims=" %%a in ("%file%") do (
set /A i+=1
call echo %%i%%
call set array[%%i%%]=%%a
call set n=%%i%%
)
for /L %%i in (1,1,%n%) do call echo %%array[%%i]%%https://stackoverflow.com/questions/23928920
复制相似问题