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

[网络连接] 获取管理员权限的代码为什么会影响到获取网络盘符的判断?

本帖最后由 diablozhao 于 2021-11-30 17:01 编辑

前提:
1.创建一个网络驱动器
  1. net use U: \\192.168.1.2\doc
复制代码
2.删除这个网络驱动器
  1. net use U: delete
复制代码
3.这时候在【资源管理器】的【此电脑】中可以看网络位置 U: 但是会显示一个大叉。

=====================================================
问题:
使用普通DOS命令
  1. if exist U: (echo U is ok) else (echo U is bad)
复制代码
结果显示为:
U is bad
(这是我想要的结果)

但是,如果批处理中加了获取管理员权限的代码
  1. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""%~f0""","::",,"runas",1)(close)&exit /b
  2. if exist U: (echo U is ok) else (echo U is bad)
复制代码
结果就变成了:
U is ok

为什么会这样。。。疯了

晕了。。。

批处理里设置的 net use U: \\xxx
显示的是 命令成功完成 ,但资源管理器里不显示。
net use U: /delete 也是删不掉盘符

但是在CMD下直接键入是有效的。。。

TOP

完整的如下,但不起作用
  1. @echo off
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""%~f0""","::",,"runas",1)(close)&exit /b
  3. setlocal enabledelayedexpansion
  4. cd /d "%~dp0"
  5. set dzzfc0= ==========================================================
  6. set dzzfc1=\\shanghai-fs\doc
  7. set dzzfc2=\\beijing-fs\doc
  8. set dzzfc3=\\guangzhou-fs\doc
  9. :DZENV
  10. echo %dzzfc0%
  11. echo 是否需要自动创建网络驱动器【U:】?
  12. echo 无需设置环境请直接按"回车"
  13. echo 键入"1" 切换到 上海
  14. echo 键入"2" 切换到 北京
  15. echo 键入"3" 切换到 广州
  16. set /p input=请输入需要切换环境的相应数字:
  17. for %%i in (1 2 3) do (
  18. if "%input%"=="%%i" (
  19. if exist U: (
  20. choice /c:YN /m "已经存在【U:】驱动器,是否需要覆盖?"
  21. if errorlevel 2 goto END
  22. net use U: /delete
  23. )
  24. net use U: !dzzfc%%i!
  25. setx ENV_ROOT U: /m
  26. echo 已配置到网络驱动器【U:】!
  27. )
  28. )
  29. goto END
  30. :END
  31. echo %dzzfc0%
  32. pause
  33. goto:eof
复制代码

TOP

返回列表