CMD.区分管理员、用户组等

ZC:摘要:"net session"(判断是否管理员)、"whoami /?"(用户信息)、"net user %username%"(用户组等信息)

1、批处理中的****1>nul 2>nul是什么意思?

1>nul 意思是不显示命令运行的正确提示
2>nul 是不显示错误提示
一起就是 正确错误的都不显示
>是重定向符号
nul是空设备的意思
把提示输入到空设备就不显示了 

2、bat代码中判断 bat是否是以管理员权限运行,以及自动以管理员权限运行CMD BAT - 亟待! - 博客园.html(https://www.cnblogs.com/05-hust/p/12089839.html

 一、判断bat是否是以管理员权限运行

@echo off
net.exe session 1>NUL 2>NUL && (
    goto as_admin
) || (
    goto not_admin
)

:as_admin
echo as_admin
goto end

:not_admin
echo not as admin

:end
pause

 二、自动以管理员权限运行本CMD或BAT文件

@echo off  
net.exe session 1>NUL 2>NUL && (
    goto gotAdmin
) || (
    goto UACPrompt
)
   
:UACPrompt  
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" 
    "%temp%\getadmin.vbs" 
    exit /B  
   
:gotAdmin  
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )  
 
:begin

pause

3、whoami命令可以查出windows系统的SID号等信息。

4、如何检测CMD是否以管理员身份运行_具有较高权限? - 问答 - 云+社区 - 腾讯云.html(https://cloud.tencent.com/developer/ask/112468

 ZC:! ! ! AT命令 在WIn7中还有,在WIn10中 已经弃用了...

AT > NUL
IF %ERRORLEVEL% EQU 0 (
    ECHO you are Administrator
) ELSE (
    ECHO you are NOT Administrator. Exiting...
    PING 127.0.0.1 > NUL 2>&1
    EXIT /B 1
)

5、批处理判断当前用户组的方法_zhouzhou_新浪博客.html(http://blog.sina.com.cn/s/blog_3d730bdf0101bp3f.html

@echo off
rem ZC: 个人感觉%%i,%%j,%%k应该指的是tokens分割字符串的第1/2/3字段 (仅猜猜,待查资料证实)
rem %%i为第1字段,%%j为第2字段,%%k为第3字段,请根据需要修改获取的变量。
for /f "tokens=1,2,* " %%i in ('net user %username% ^| find /i "本地组成员"') do set "users=%%j"
echo 当前用户%username%所在用户组为%users%
pause

 ZC:在 Win7x64(公司机子)上,上面的指令没有问题;但是在家里的Win10x64机子上,报错:“'tokens' 不是内部或外部命令,也不是可运行的程序或批处理文件。

 ZC:对上面的 for+tokens+find命令 还不是太理解...

 ZC:查了一些资料,帮助理解:“net user %username%” 可以看到 某个用户所在的用户组的信息;自己尝试,“net user %username% ^| find /i "本地组成员"”会打印出 “net user %username%”结果的部分信息。然后理解一下,这个bat的大概意思应该就是:“net user %username%”获得用户的信息 --> 将结果交给“find /i "本地组成员"” 找到"本地组成员"部分的信息,然后再由 tokens进行字符串提取

 5.1、Bat命令学习-批处理中的&、&&、|、||、>、>>符号-CSDN博客.html(https://blog.csdn.net/Oliver_xpl/article/details/88717522)(https://blog.csdn.net/iloli/article/details/44339893

&  顺序执行多条命令,而不管命令是否执行成功
  例:copy nul 5.txt & echo 666 >>5.txt & more 5.txt
  创建5.txt文档,向5.txt文档中写入内容“666”,输出5.txt的内容。

&& 顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令

|| 顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令(即:只有前面命令执行错误时才执行后面命令)

|  管道命令 前一个命令的执行结果输出到后一个命令 如:help|more

> 清除文件中原有的内容后再写入

>> 追加内容到文件末尾,而不会清除原有的内容主要将本来显示在屏幕上的内容输出到指定文件中指定文件如果不存在,则自动生成该文件

 5.2、批处理 ^什么意思_百度知道.html(https://zhidao.baidu.com/question/160218459.html

^是批处理中的转义符,用于转义特殊字符为普通字符。
这个FOR命令是将'ipconfig^|find "IP Address"'中间的字符当作命令来执行百,而其中的 | 不是个普通字符,而是个命令符号,所以需要用转义符号 ^ 把 | 转义成普通字符,这样 'ipconfig^|find "IP Address"'里面度就全是普通字符了,FOR命令才能正确执行。
举例:
echo >
结果是命令语法不正确。
echo ^>
结果是显示 > 这个字符。
echo ^^
结果是显示 ^ 这个字符。
另外像 ^ & | < > 这些字符都是特殊字符,当你要将他们作内为普通字符使用时,都要在前面加上 ^ 这个转义容符。

 5.3、批处理之 for _f 中的delims和tokens - AskTa0 - 博客园.html(https://www.cnblogs.com/ldhbetter/p/9196599.html

0x01 对整条语句的分解剖析
1、for /f :用来解析文本,读取字符串 ,将要读取的文本就是tmplist.txt。
2、tokens:tokens负责提取字符串。具体用法见实例。
3、delims:根据定义的符号,负责切分字符串,比如delims== 就是根据=号来切分字符串。
4、in 、do :也就是表面的含义吧,在什么里面和做什么
5、(tmplist.txt):要操作的文本文件
6、echo %%a >> software.txt: 将一段内容重定向到software.txt文本中

 5.4、Bat 批处理之 for_f 详解_运维_蜡笔小辛的专栏-CSDN博客.html(https://blog.csdn.net/davidhsing/article/details/1996180

含有/F的for
格式:
FOR /F ["options"] %%i IN (file) DO command
FOR /F ["options"] %%i IN ("string") DO command
FOR /F ["options"] %%i IN ('command') DO command

6、start

7、runas

8、

9、

猜你喜欢

转载自www.cnblogs.com/osskill/p/12676737.html