Batch file 如何从LOCALGROUP在win cmd bat上迭代特定组
#一, #二, 我试了两种方法都没有成功。 #1我无法添加Batch file 如何从LOCALGROUP在win cmd bat上迭代特定组,batch-file,cmd,Batch File,Cmd,#一, #二, 我试了两种方法都没有成功。 #1我无法添加IF并仅为列表中的3个组发出特定命令。 我只想为这些组打开一个特定端口 我也尝试了#2,但for循环中的goto取消了循环:-( 知道怎么修吗? 提前感谢!使用以下命令: for %%r in ("users" "admin" "guest" ) do ( NET LOCALGROUP | FIND /i %%r > nul && goto GroupEx
IF
并仅为列表中的3个组发出特定命令。
我只想为这些组打开一个特定端口
我也尝试了#2,但for循环中的goto取消了循环:-(
知道怎么修吗?
提前感谢!使用以下命令:
for %%r in ("users" "admin" "guest" ) do (
NET LOCALGROUP | FIND /i %%r > nul && goto GroupExists
goto NextGroup
:GroupExists
echo do somethings ...
:NextGroup
)
==Get-ThreeGroups.ps1
powershell -NoLogo -NoProfile -File 'C:\src\t\Get-ThreeGroups.ps1
如果您不想拥有.ps1文件,可以在.bat文件脚本中使用它
Get-LocalGroup -Name @('guests','users','administrators') -ErrorAction SilentlyContinue|
& doit.exe $_.Name
对于下一代,这就是答案:
powershell -NoLogo -NoProfile -Command ^
"Get-LocalGroup -Name @('guests','users','administrators') -ErrorAction SilentlyContinue|" ^
"& doit.exe $_.Name"
您真正想做什么?命令
net LOCALGROUP
只列出了本地用户组,您可以在命令提示符窗口中运行此命令。您可以运行net LOCALGROUP Administrators
(使用英文Windows)要查看属于本地组的帐户,请运行cmd windownet localgroup/?
,以获取有关可用选项的简要帮助。我们需要了解您试图实现的目标,因为在基本Windows系统中,我希望至少看到%\uu AppDir\uuuu%net.exe localgroup
中的这些行与ree不区分大小写%\uuuuu-AppDir\uuuuu%find.exe
字符串:*管理员
,*分布式COM用户
,*来宾
,*Hyper-V管理员
,*性能监视器用户
,*高级用户
,*远程桌面用户
,以及*远程桌面用户管理用户
,和*用户
。#1:这不是如果
的工作方式。请参阅如果/?
。#2:循环中不允许使用标签,每个转到
都会中断循环。谢谢,我更喜欢在bat cmd上执行此操作,但如果我无法成功修复bat com localgroup上的条件,我将尝试ps。问:我该怎么做t指的是最后一部分“&doit.exe$\uu.Name”?只有当计算机上存在组时,才有办法添加IF条件并运行命令,如原始消息中所示打开端口?@orenga,&doit.exe
将是您的“特定命令”。不存在的组将不会通过管道传递到您的特定命令。
powershell -NoLogo -NoProfile -Command ^
"Get-LocalGroup -Name @('guests','users','administrators') -ErrorAction SilentlyContinue|" ^
"& doit.exe $_.Name"
@echo off
chcp 65001
for %%r in ("users" "admin" "guest" ) do (
NET LOCALGROUP | FIND /i %%r > nul && CALL :HandlePort %%r
)
GOTO END
:HandlePort
ECHO %*
SET /a i=8090
:loop
IF %i%==8095 ( EXIT /B 0 )
REM echo This is port %i%.
netsh http delete urlacl url=http://127.0.0.1:%i%/
netsh http add urlacl url=http://127.0.0.1:%i%/ user=%*
SET /a i=%i%+1
GOTO LOOP
EXIT /B 0
:END