我正在为我管理的设备编写运行状况检查脚本。 下面给出的是输出是列出我管理的每个设备的命令。 对于每个设备列表,我想运行某些运行状况检查命令并检查每个设备的状态。输入的格式如下所示。 我想选择第一个单词,它将是该单元的序列号。 由于这些设备是从Windows框管理的,因此需要创建批处理文件。
=============================================== ===================
C:\ Documents and Settings \ server> symcfg list
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循环,该循环将运行一些命令进行运行状况检查。
非常感谢任何帮助。
答案 0 :(得分:2)
您只需跳过前5个标题行并处理其余内容:
@echo off
for /F "skip=5" %%a in ('symcfg list') do echo %%a
由空格分隔的第一个标记(默认行为)被分配给%% a。
答案 1 :(得分:1)
@echo off
setlocal enableextensions
for /f %%a in (
'symcfg list ^| findstr /r /c:"^[0-9]"'
) do (
echo %%a
)
endlocal
执行命令,过滤行以仅检索包含所需数据的行(包含所包含样本中的数字的行)。 for
命令将使用空格标记字符串(默认行为),检索行中的第一个标记。
答案 2 :(得分:-2)
@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]%%
答案 3 :(得分:-2)
使用for循环..像这样的东西
@echo off
for / f %% a in(filename.extension)do(
Echo %% a
)
这将输出文件中每个可能行中的第一个标记......
注意将filename.extension替换为相应的文件 要使此代码能够工作,您必须这样做 将批处理文件放在包含文件symcfg列表的目录中并运行它