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

[特效代码] 批处理命令if else为何出错?

  1. netsh wlan show drivers |find "是否承载网路"|find "是"
  2. if "%errorlevel%"=="0" (goto setup) else(goto error)
  3. :setup
  4. set /P name= 输入你想更改的用户名:
  5. set /P key= 输入你想更改的密码:
  6. netsh wlan  set hostednetwork mode=allow ssid="%name%" key="%key%"
  7. netsh wlan start hosted
  8. echo 开启成功,按任意键退出...
  9. pause
  10. goto end
  11. :error
  12. echo "驱动不支持开启wifi,请更新驱动”
  13. goto end
复制代码
此段代码错误在哪呀,运行的时候是直接退出,刚接触dos感觉跟bash有很多不一样啊,不懂
刚开始写的是
  1. if "%errorlevel%"=="0" (
  2. set /P name= 输入你想更改的用户名:
  3. set /P key= 输入你想更改的密码:
  4. netsh wlan  set hostednetwork mode=allow ssid="%name%" key="%key%"
  5. netsh wlan start hosted
  6. echo 开启成功,按任意键退出...
  7. pause
  8. goto end ) else (
  9. echo "驱动不支持开启wifi,请更新驱动”
  10. goto end )
复制代码
这个也是运行不正确,不知道哪里理解错了

你接触的是cmd下的批处理,不叫dos
if语法:
  1. if "%errorlevel%"=="0" (
  2.    goto setup
  3. ) else (
  4.    goto error
  5. )
复制代码

TOP

本帖最后由 CrLf 于 2013-4-11 18:40 编辑
  1. if xxx (
  2. 代码....
  3. set /P name= 输入你想更改的用户名:
  4. set /P key= 输入你想更改的密码:
  5. call netsh wlan  set hostednetwork mode=allow ssid="%%name%%" key="%%key%%"
  6. 代码....
  7. )
复制代码

TOP

目测,你的else后少了个空格应该是else (

TOP

  1. @ECHO OFF & title Win7虚拟无线路由 & cd /d %~dp0
  2. if /i not "%1"=="" goto %1
  3.   echo Loading...
  4.   netsh wlan show drivers>nul
  5.   if errorlevel 1 cls & echo 没有无线网卡设备或无线没有开启!
  6.   FOR /F "tokens=3 delims= " %%i in ('netsh wlan show drivers^|find "支持的承载网络"') do (
  7.           cls & echo 支持的承载网络:%%i
  8.           if %%i==是 netsh wlan show drivers|find /i "vwifibus.sys" >nul && goto main || echo 未找到vwifibus.sys文件,请重新安装无线网卡驱动!
  9. )
  10. pause >nul & exit
  11. :main
  12. cls & echo 正在更新状态...
  13.   FOR /F "tokens=3 delims= " %%i in ('netsh wlan show hostednetwork^|find "状态"') do (cls & echo 虚拟无线路由当前状态为:%%i & set zt=%%i)
  14. echo.
  15. echo 1.启用虚拟无线路由
  16. echo.
  17. echo 2.关闭虚拟无线路由
  18. echo.
  19. echo 3.设置开机自动启用虚拟无线路由
  20. echo.
  21. echo 4.取消开机自动启用虚拟无线路由
  22. echo,
  23. echo 5.修改无线名称及密码
  24. echo.
  25. set choice=
  26. set /p choice=输入编号,按下回车键=
  27. if "%choice%"=="1" goto auto
  28. if "%choice%"=="2" if not "%zt%"=="不可用" cscript //nologo ics.vbs "无线网络连接 2" "本地连接" "off" >nul & netsh wlan set hostednetwork mode=disallow >nul & goto show
  29. if "%choice%"=="3" reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v autowifiap /d "mshta vbscript:createobject(\"wscript.shell\").run(\"%~s0 auto\",0)(window.close)" /f >nul 2>nul && echo 设置成功!注:该批处理不能移动、重命名及删除,否则将无法开机自动运行。 || echo 设置失败!
  30. if "%choice%"=="4" reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v autowifiap /f >nul 2>nul && echo 取消成功! || echo 取消失败或还没有设置开机启用。
  31. if "%choice%"=="5" notepad wifi.ini & echo 修改完成后需重启虚拟无线路由才能生效!
  32. if "%choice%"=="" cls & goto main
  33. pause
  34. cls & goto main
  35. :auto
  36. FOR /F "eol=; tokens=2 delims=:" %%i in ('type wifi.ini^|find "无线名称"') do (set "SSIDvalue=%%i")
  37. FOR /F "eol=; tokens=2 delims=:" %%i in ('type wifi.ini^|find "无线密码"') do (set "PasswordValue=%%i")
  38. echo 无线名称=%SSIDvalue% 无线密码=%PasswordValue%
  39. if /i not "%1"=="auto" pause
  40. cscript //nologo ics.vbs "无线网络连接 2" "本地连接" "off" >nul & netsh wlan set hostednetwork mode=disallow >nul
  41. sc config MpsSvc start=demand >nul 2>nul
  42. net start MpsSvc >nul 2>nul
  43. netsh wlan set hostednetwork mode=allow "ssid=%SSIDvalue%" "key=%PasswordValue%" keyUsage=persistent >nul
  44. netsh wlan start hostednetwork >nul
  45. if errorlevel 1 echo 请尝试更新无线网卡驱动或重新安装系统!& netsh wlan set hostednetwork mode=disallow >nul & pause>nul & exit
  46. if exist ics.vbs (cscript //nologo ics.vbs "无线网络连接 2" "本地连接" "on" >nul) else (echo 未找到ics.vbs文件,可能需要手动设置共享才能访问网络!)
  47. :show
  48. if /i "%1"=="auto" exit
  49. cls & netsh wlan show hostednetwork
  50. pause & goto main
复制代码

TOP

回复 2# apang
原来我连名字都没搞清楚....真该去看点基础的了,多谢多谢

TOP

回复 5# 522235677
这个给力啊,好,我多看看,学习了,多谢了

TOP

回复 4# xxpinqz
先回复,然后再去测试,嘿,多谢

TOP

回复 3# CrLf
多谢,多谢,很多东西都不懂,唉,自己试了半天也不知道哪错了

TOP

返回列表