Board logo

标题: [系统相关] 批处理判断是否等于多个用户 [打印本页]

作者: 3512747    时间: 2022-10-18 10:48     标题: 批处理判断是否等于多个用户

请教各位大神,如何判断系统当前登录用户是否等于1或2或3....
如果等于就执行条件一,不等于就执行条件二。

用VBS实现的话没有黑窗口显示效果是不是更好一些。
作者: fzp070    时间: 2022-10-18 11:17

这样可以不,双引号中的1改为你想判断的用户名
  1. @echo off
  2. echo %username% |find "1" >nul &&goto 1
  3. pause
  4. :1
  5. echo 等于1
  6. pause
复制代码

作者: 3512747    时间: 2022-10-18 11:27

回复 2# fzp070

多个用户的话要怎么操作,万分感谢!
作者: 3512747    时间: 2022-10-18 11:31

回复 2# fzp070


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

比如:如果(当前用户=“1” 或 当前用户=“2” 或 当前用户=“3“)
            运行(c:\1.exe)
        否则
            运行(c:\2.exe)
作者: fzp070    时间: 2022-10-18 11:44

回复 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
复制代码

作者: holley    时间: 2022-10-18 12:08

回复 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
复制代码

作者: fzp070    时间: 2022-10-18 12:42

在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
复制代码

作者: Batcher    时间: 2022-10-18 15:05

回复 2# fzp070


这样用 find 是不对的。
比如两个用 abc 和 abcd 这种写法查找 abc 的时候会把 abcd 也错误的找出来。
作者: Batcher    时间: 2022-10-18 15:10

回复 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. )
复制代码

作者: Batcher    时间: 2022-10-18 15:14

回复 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
复制代码

作者: fzp070    时间: 2022-10-18 15:22

回复 8# Batcher


    是的,我也发现了。还是用if判断这样能确保一致性。
  1. if /i "%username%"=="1"
复制代码

作者: qixiaobin0715    时间: 2022-10-18 16:26

本帖最后由 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. )
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2