找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22715|回复: 11

[系统相关] 批处理判断是否等于多个用户

[复制链接]
发表于 2022-10-18 10:48:17 | 显示全部楼层 |阅读模式
请教各位大神,如何判断系统当前登录用户是否等于1或2或3....
如果等于就执行条件一,不等于就执行条件二。

用VBS实现的话没有黑窗口显示效果是不是更好一些。
发表于 2022-10-18 11:17:48 | 显示全部楼层
这样可以不,双引号中的1改为你想判断的用户名
  1. @echo off
  2. echo %username% |find "1" >nul &&goto 1
  3. pause
  4. :1
  5. echo 等于1
  6. pause
复制代码
 楼主| 发表于 2022-10-18 11:27:39 | 显示全部楼层
回复 2# fzp070

多个用户的话要怎么操作,万分感谢!
 楼主| 发表于 2022-10-18 11:31:50 | 显示全部楼层
回复 2# fzp070


    我现在写的和目前这个差不多  就是不知道要怎么增加多个条件

比如:如果(当前用户=“1” 或 当前用户=“2” 或 当前用户=“3“)
            运行(c:\1.exe)
        否则
            运行(c:\2.exe)
发表于 2022-10-18 11:44:08 | 显示全部楼层
回复 4# 3512747


    多增加几次判断,你看看这样子可以吗?
  1. @echo off
  2. ::判断系统当前用户名
  3. echo %username% |find "1" >nul &&goto 1
  4. echo %username% |find "2" >nul &&goto 2
  5. echo %username% |find "3" >nul &&goto 3
  6. echo 当前用户名不等于1和2和3
  7. pause

  8. :1
  9. echo 当前用户名等于1
  10. pause

  11. :2
  12. echo 当前用户名等于2
  13. pause

  14. :3
  15. echo 当前用户名等于3
  16. pause
复制代码
发表于 2022-10-18 12:08:32 | 显示全部楼层
回复 1# 3512747
这种?
  1. :2
  2. if /i "%username%"=="Administrator" (echo 当前用户为Administrator) else (goto 3)
  3. :3
  4. if /i "%username%"=="1" (echo 当前用户为1) else (goto 4)
  5. :1
  6. if /i "%username%"=="2" (echo 当前用户为2) else (goto 2)
  7. :4
  8. if /i "%username%"=="3" (echo 当前用户为3) else (goto 5)

  9. :5

  10. pause>nul
复制代码
发表于 2022-10-18 12:42:15 | 显示全部楼层
在6楼基础上改的,如果你只需要运行一个exe程序,也可以如下这样操作,如果要有很多动作,就不适合
  1. @echo off
  2. if /i "%username%"=="1" echo 当前用户为1  &start c:\1.exe
  3. if /i "%username%"=="2" echo 当前用户为2 &start c:\2.exe
  4. if /i "%username%"=="3" echo 当前用户为3 &start c:\3.exe
  5. pause>nul
复制代码
发表于 2022-10-18 15:05:55 | 显示全部楼层
回复 2# fzp070


这样用 find 是不对的。
比如两个用 abc 和 abcd 这种写法查找 abc 的时候会把 abcd 也错误的找出来。
发表于 2022-10-18 15:10:51 | 显示全部楼层
回复 4# 3512747


test_1.bat
  1. @echo off
  2. if /i "%username%" equ "AAA" (
  3.     start "" "C:\Test Folder\1.exe"
  4. ) else if /i "%username%" equ "BBB" (
  5.     start "" "C:\Test Folder\1.exe"
  6. ) else if /i "%username%" equ "CCC" (
  7.     start "" "C:\Test Folder\1.exe"
  8. ) else (
  9.     start "" "C:\Test Folder\2.exe"
  10. )
复制代码
发表于 2022-10-18 15:14:06 | 显示全部楼层
回复 4# 3512747


test_2.bat
  1. @echo off
  2. if /i "%username%" equ "AAA" (
  3.     goto :UsersYes
  4. ) else if /i "%username%" equ "BBB" (
  5.     goto :UsersYes
  6. ) else if /i "%username%" equ "CCC" (
  7.     goto :UsersYes
  8. ) else (
  9.     goto :UsersNo
  10. )

  11. :UsersYes
  12. start "" "C:\Test Folder\1.exe"
  13. REM 很多代码不方便重复写在 if 语句里面
  14. goto :eof

  15. :UsersNo
  16. start "" "C:\Test Folder\2.exe"
  17. REM 很多代码不方便重复写在 if 语句里面
  18. goto :eof
复制代码
发表于 2022-10-18 15:22:51 | 显示全部楼层
回复 8# Batcher


    是的,我也发现了。还是用if判断这样能确保一致性。
  1. if /i "%username%"=="1"
复制代码
发表于 2022-10-18 16:26:20 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2022-10-18 16:40 编辑
  1. echo,%USERNAME%|findstr /i /x /l "AAA BBB CCC" >nul
  2. if %ERRORLEVEL% equ 0 (
  3.     执行一方案
  4. ) else (
  5.     执行二方案
  6. )
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 14:30 , Processed in 0.030745 second(s), 15 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表