我有一个数据文本文件,其中数据分为以下几组:
[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
当批处理脚本运行时,它将要求输入一个字符串;然后它将搜索文件中的输入字符串并报告找到字符串的组。 (字符串没有空格。)
答案 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!
)
)
此代码将在输入文件中搜索包含组或用户名的行,并迭代此生成的列表。对于每一行,如果它与用户名不匹配,则它是一个组,名称存储在一个变量中。如果该行包含用户名,则它是上次看到的组的成员。由于组名存储在变量中,因此它将回显到控制台。
因此,如果用户是多个组的成员,则找到该用户的所有组都将回显到控制台。