首页 > 解决方案 > 如何在来自 LOCALGROUP 的 win cmd bat 上迭代特定组

问题描述

#1

for %%r in ("users" "admin" "guest" ) do (
 IF ( NET LOCALGROUP | FIND /i %%r > nul ) (
     netsh http add urlacl url=http://127.0.0.1:%i%/ user=%%r
 )
)

#2

for %%r in ("users" "admin" "guest" ) do (
 NET LOCALGROUP | FIND /i %%r > nul && goto GroupExists
goto NextGroup
:GroupExists
echo do somethings ...
:NextGroup
)

我尝试了两种方法都没有成功。#1 我不能IF只为列表中的 3 个组添加和执行特定命令。我只想为这些组打开一个特定的端口

我也尝试#2,但是 for 循环中的 goto 取消了循环:-(

知道如何解决吗?提前致谢!

标签: batch-filecmd

解决方案


使用以下命令:

powershell -NoLogo -NoProfile -File 'C:\src\t\Get-ThreeGroups.ps1

=== Get-ThreeGroups.ps1

Get-LocalGroup -Name @('guests','users','administrators') -ErrorAction SilentlyContinue|
    & doit.exe $_.Name

如果您不想拥有 .ps1 文件,可以在 .bat 文件脚本中使用它。

powershell -NoLogo -NoProfile -Command ^
    "Get-LocalGroup -Name @('guests','users','administrators') -ErrorAction SilentlyContinue|" ^
        "& doit.exe $_.Name"

推荐阅读