微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

批处理脚本-重写输出

如何解决批处理脚本-重写输出

是否可以使用批处理脚本重写输出

C:\>icacls c:\amd | find/i "BUILTIN"
c:\amd BUILTIN\Administrators:(I)(OI)(CI)(F)
       BUILTIN\Users:(I)(OI)(CI)(RX)

我如何只获得没有额外功能用户/组,如下所示?

BUILTIN\Administrators
BUILTIN\Users

谢谢。

解决方法

set提供了一种方法来替换从开始到(包括)定义的字符串的所有内容:set "var=*word=word"
由于这不适用于元变量(“ for-variable”),因此我们必须将每一行分配给“ normal”变量,然后将“从开始到包含BUILTIN的所有内容替换为{{1} },然后回显其余的第一个标记(以冒号分隔)。

很明显,BUILTIN的输出取决于语言,因此用您的Windows语言(英语为icalcs)中的适当单词替换VORDEFINIERT

BUILTIN
,

在我进行可能的修改时。我已经在下面编写了代码(谢谢Stephen),这样我就可以同时获取BUILTIN和NT AUTHORITY条目。 即使代码不干净加上重复,它也可以工作。 为/?即使我试图在网上其他地方查找其参考和样本,也有很多需要理解的地方。

@echo off
setlocal enabledelayedexpansion

set "folder=C:\amd"

for /f "delims=" %%a in ('icacls %folder% ^| findstr BUILTIN') do (
   set "line=%%a"
   for /f "delims=:" %%b in ("!line:*BUILTIN=BUILTIN!") do echo %%b
)

for /f "delims=" %%a in ('icacls %folder% ^| findstr "NT AUTHORITY"') do (
   set "line=%%a"
   for /f "delims=:" %%b in ("!line:*NT AUTHORITY=NT AUTHORITY!") do echo %%b
)

这是实际输出。

BUILTIN\Administrators
BUILTIN\Users
NT AUTHORITY\SYSTEM
NT AUTHORITY\Authenticated Users
NT AUTHORITY\Authenticated Users

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。