Loops 如何使用多个循环来排除字符串?
我正在尝试做一个不可能的循环组合。:)我需要的是从所有服务中排除特定的服务列表,以及所有这些脚本本身(没有外部文件) 我需要将几个循环组合起来,我想这对我来说太复杂了。:)Loops 如何使用多个循环来排除字符串?,loops,batch-file,service,Loops,Batch File,Service,我正在尝试做一个不可能的循环组合。:)我需要的是从所有服务中排除特定的服务列表,以及所有这些脚本本身(没有外部文件) 我需要将几个循环组合起来,我想这对我来说太复杂了。:) 在第一阶段,通过“服务名称:”循环加载服务: 第二,加载字符串列表(服务名称)通过“S_”识别 与输出进行比较和排除 有一种更简单的方法可以工作,但纯粹出于好奇,这有可能工作吗?findstr可以检查几个单词,因此将列表转换为一行单词,并将这一行与findstr一起使用会使事情变得非常简单: @echo off setloc
有一种更简单的方法可以工作,但纯粹出于好奇,这有可能工作吗?
findstr
可以检查几个单词,因此将列表转换为一行单词,并将这一行与findstr
一起使用会使事情变得非常简单:
@echo off
setlocal enabledelayedexpansion
REM convert list to line:
for /f "tokens=2* delims=_" %%s IN ('findstr /b "S_" "%~f0"') DO set "exclude=!exclude! %%s"
REM for each service name do:
for /f "tokens=2 delims=: " %%a IN ('sc query state^= all ^|find "SERVICE_NAME:"') do (
REM if it is not in exclude list, echo it:
echo %%a|findstr "%exclude%">nul || echo %%a
)
goto :eof
REM list of services to exclude:
S_Dhcp
S_WSearch
S_XboxNetApiSvc
S_SysMain
S_TabletInputService
S_wuauserv
S_wudfsvc
S_WwanSvc
您希望%%X的
循环做什么??请移除标签,因为它不适用!!(读取标签信息)第三个循环必须将第一个循环与第二个循环进行比较。。。最有问题的是什么?苹果加橙子?;-)请回答您的问题,并准确描述您正试图实现的目标;也许添加一些示例输入/输出数据是一个好主意…第一个和第二个循环本身运行良好,您可以尝试。。。首先列出所有服务,然后从文件本身列出服务。。。那我就需要把两者都排除在外。我不知道我要说的有多具体……你是想杀死所选的服务吗?或者只是想学习如何使用封闭FOR循环?:)ya Thank rest很简单:)我只是没想到把多行代码转换成一行。请记住,这是有限制的,但它应该能满足您的需要。
@echo off
setlocal enabledelayedexpansion
REM convert list to line:
for /f "tokens=2* delims=_" %%s IN ('findstr /b "S_" "%~f0"') DO set "exclude=!exclude! %%s"
REM for each service name do:
for /f "tokens=2 delims=: " %%a IN ('sc query state^= all ^|find "SERVICE_NAME:"') do (
REM if it is not in exclude list, echo it:
echo %%a|findstr "%exclude%">nul || echo %%a
)
goto :eof
REM list of services to exclude:
S_Dhcp
S_WSearch
S_XboxNetApiSvc
S_SysMain
S_TabletInputService
S_wuauserv
S_wudfsvc
S_WwanSvc
@echo off
setlocal EnableDelayedExpansion
rem Load the list of names as a string, enclose each name in slahes
rem in order to avoid partial name matches (like NetApi in XboxNetApiSvc)
set "exclude=/"
for %%S in (
Dhcp
WSearch
XboxNetApiSvc
) do set "exclude=!exclude!%%S/"
rem For each active service
FOR /F "tokens=2 delims=: " %%A IN ('sc query state^= all ^|find "SERVICE_NAME:"') do (
rem If the name is not in the exclude list, echo it:
IF "!exclude:/%%A/=!" EQU "%exclude%" echo %%A
)