Win32批处理脚本,搜索字符串数据并确定组名称

时间:2014-06-30 21:22:21

标签: batch-file dos

我有一个数据文本文件,其中数据分为以下几组:

[Group 1]

string-1

string-2

string-3


[Group 2]

string-4

string-5

string-6

string-7

string-8

[Group 3]

string-9

string-10

当批处理脚本运行时,它将要求输入一个字符串;然后它将搜索文件中的输入字符串并报告找到字符串的组。 (字符串没有空格。)

2 个答案:

答案 0 :(得分:1)

像这样:

@echo off

set /p "$UserInput=Enter the string : "

setlocal enabledelayedexpansion
set /a $c=0
for /f "delims=" %%a in (data.txt) do (
 set $line=%%a
 if "!$line:~0,1!"=="[" set /a $c+=1
 if /i !$line!==%$UserInput% goto:next
)
exit /b

:next
echo User is group is : [Group!$c!]

答案 1 :(得分:0)

@echo off

    setlocal enableextensions enabledelayedexpansion

    set "user="
    set /p "user=user name ? "

    if defined user (
        for /f "delims=" %%a in (
            'findstr /r /i /x /c:"\[.*\]" /c:"%user%" "users.txt"'
        ) do if not "%%a"=="%user%" ( set "group=%%a" ) else (
            echo Member of :!group!
        )
    )

此代码将在输入文件中搜索包含组或用户名的行,并迭代此生成的列表。对于每一行,如果它与用户名不匹配,则它是一个组,名称存储在一个变量中。如果该行包含用户名,则它是上次看到的组的成员。由于组名存储在变量中,因此它将回显到控制台。

因此,如果用户是多个组的成员,则找到该用户的所有组都将回显到控制台。