[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

用VBS实现的话没有黑窗口显示效果是不是更好一些。

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

TOP

回复 2# fzp070

多个用户的话要怎么操作,万分感谢!

TOP

回复 2# fzp070


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

比如:如果(当前用户=“1” 或 当前用户=“2” 或 当前用户=“3“)
            运行(c:\1.exe)
        否则
            运行(c:\2.exe)

TOP

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

TOP

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

TOP

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

TOP

回复 2# fzp070


这样用 find 是不对的。
比如两个用 abc 和 abcd 这种写法查找 abc 的时候会把 abcd 也错误的找出来。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# Batcher


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

TOP

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

TOP

返回列表