Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何从LOCALGROUP在win cmd bat上迭代特定组_Batch File_Cmd - Fatal编程技术网

Batch file 如何从LOCALGROUP在win cmd bat上迭代特定组

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

#一,

#二,

我试了两种方法都没有成功。 #1我无法添加
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 window
net 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