使用批处理脚本从文本文件中读取特定行上的第一个单词,然后将其输入到for语句中

时间:2014-05-29 08:25:21

标签: batch-file for-loop

我正在为我管理的设备编写运行状况检查脚本。 下面给出的是输出是列出我管理的每个设备的命令。 对于每个设备列表,我想运行某些运行状况检查命令并检查每个设备的状态。输入的格式如下所示。 我想选择第一个单词,它将是该单元的序列号。 由于这些设备是从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循环,该循环将运行一些命令进行运行状况检查。

非常感谢任何帮助。

4 个答案:

答案 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列表的目录中并运行它