Board logo

标题: [文本处理] 基本上【已解决】账户录入的批处理有没有什么改进的(没试机过) [打印本页]

作者: nwdxlgzs    时间: 2019-2-12 16:47     标题: 基本上【已解决】账户录入的批处理有没有什么改进的(没试机过)

本帖最后由 nwdxlgzs 于 2019-2-13 14:30 编辑

没试呢,因为是手机打的。不知道有什么问题。看看有没有可以改动的…?
基本上都是echo和if判断,我不会特殊字符识别过滤,所以就只好创建文件靠改名字触发错误代码验证了,好像那个错误提示是1(总之就是不能命名那个),这样做有文件生成,不好。我也不知道,有没有别的办法。
  1. @echo off
  2. :初始化
  3. if not exist "非法字符验证容器.ini" cd.>非法字符验证容器.ini
  4. setlocal enabledelayedexpansion
  5. title=用户注册端
  6. set "returna=0"
  7. set "returnb=0"
  8. set "returnc=0"
  9. :声明
  10. echo=声明
  11. echo=——————————————————————————
  12. echo=抱歉,为了便利程序开发,注册端没有GUI界面。
  13. echo=注册也就一次的事,往后您不会一直面对命令行操作的。
  14. echo=(强行找借口掩饰,Emmm)
  15. echo=注册端没有恶意代码,请放心使用。
  16. echo=——————————————————————————
  17. echo=按任意键跳过10秒声明的等待
  18. timeout 10 >nul
  19. :注册录入账号
  20. CLS
  21. echo=验值提示框
  22. echo=^+———————————^+
  23. if "!returna!"=="0" if "!returnb!"=="0" if "!returnc!"=="0" echo=^|暂无消息              ^|
  24. if "!returna!"=="1" echo=^|请输入8位以上的字符^!   ^|
  25. if "!returnb!"=="1" echo=^|请输入20位以内的字符^!  ^|
  26. if "!returnc!"=="1" echo=^|出现非法字符^!          ^|
  27. echo=^+———————————^+
  28. ::账号输入
  29. set /p typeaccount=注册账号:
  30. ::账号输入判断模块
  31. if "!typeaccount:~7,1!"=="" (set "returna=1"&set "returnc=0"&set "returnb=0"&goto 注册录入账号) else (set "returnc=0"&set "returnb=0"&set "returna=0")
  32. if "!typeaccount:~20,1!" neq "" (set "returnb=1"&goto 注册录入账号) else (set "returnb=0")
  33. ren "非法字符验证容器.ini" "!typeaccount!.ini"
  34. if not exist "非法字符验证容器.ini" (if exist "!typeaccount!.ini" (set "returnc=0) else (set "returnc=1"&goto 注册录入账号)) else (set "returnc=1"&goto 注册录入账号)
  35. echo=账号符合要求。
  36. ::判断参数归零
  37. ren "!typeaccount!.ini" "非法字符验证容器.ini"
  38. set "returna=0"
  39. set "returnb=0"
  40. set "returnc=0"
  41. :注册录入密码
  42. CLS
  43. echo=您正为!typeaccount!账号设置密码
  44. echo=验值提示框
  45. echo=^+———————————^+
  46. if "!returna!"=="0" if "!returnb!"=="0" if "!returnc!"=="0" echo=^|暂无消息              ^|
  47. if "!returna!"=="1" echo=^|请输入8位以上的字符^!   ^|
  48. if "!returnb!"=="1" echo=^|请输入20位以内的字符^!  ^|
  49. if "!returnc!"=="1" echo=^|出现非法字符^!          ^|
  50. echo=^+———————————^+
  51. ::密码输入
  52. set /p typepassword=输入密码:
  53. ::密码输入判断模块
  54. if "!typepassword:~7,1!"=="" (set "returna=1"&goto 注册录入密码) else (set "returnc=0"&set "returnb=0"&set "returna=0")
  55. if "!typepassword:~20,1!" neq "" (set "returnb=1"&set "returnc=0"&set "returnb=0"&goto 注册录入密码) else (set "returnb=0")
  56. ren "非法字符验证容器.ini" "!typepassword!.ini"
  57. if not exist "非法字符验证容器.ini"(if exist "!typepassword!.ini" (set "returnc=0") else (set "returnc=1"&goto 注册录入密码)) else (set "returnc=1"&goto 注册录入账号)
  58. echo=密码符合要求
  59. ::残留处理
  60. ren "!typepassword!.ini" "非法字符验证容器.ini"
  61. set "returna=0"
  62. set "returnb=0"
  63. set "returnc=0"
  64. del /f /q 非法字符验证容器.ini
  65. set "errorlevel=0"
  66. :创建用户
  67. echo=您的账号是!typeaccount!
  68. echo=您的密码是!typepassword!
  69. echo=请您牢记。
  70. echo=写入数据中。
  71. echo [用户信息]>!typeaccount!.ini
  72. echo 账号=!typeaccount!>>!typeaccount!.ini
  73. echo 密码=!typepassword!>>!typeaccount!.ini
  74. echo 注册日期=!date!!time!>>!typeaccount!.ini
  75. echo.>>!typeaccount!.ini
  76. echo [编译支持]>>!typeaccount!.ini
复制代码

作者: Batcher    时间: 2019-2-12 19:20

这个代码主要是想实现什么功能?
作者: nwdxlgzs    时间: 2019-2-12 21:41

本帖最后由 nwdxlgzs 于 2019-2-12 21:44 编辑

回复 2# Batcher

主要是完成账户录入(这里不是要特别严格的加密,只是要注册账号密码),在这里使用数据的应用正在写,这个不需要联网,纯粹是面对个人使用。不考虑盗号问题。这个录入好比程序多开一样。相当于一个命令行的录入器。不过,我想优化代码(并且能提示不能录入非法字符,因为这个影响将来程序使用)。目前这种方法过于繁杂,也不知道可靠度如何。
作者: nwdxlgzs    时间: 2019-2-12 21:55

我再说一下吧。
1这是一个账户录入程序,对账户没有加密的必要(其次加密后对我写程序是硬伤,一切都是入门,网上搜html,手里有python3,打算用electron做html为GUI的程序,我手里还有一个开源的C#的electron兼容层,苦笑)。跑题了,这个就是一个注册页面。
2思想,利用函数判断8到20位之外做提示(回到页面,由于函数被定义,if句子起作用显示提示)。最后注入一个基本文件(后面的[编译支持]后要添加其他后期数据)
3问题,主要是想无创建文件情况识别非法字符并以函数返回(不是指win下不让创建的字符,我是想禁用标点,但是可以有数字,英文或中文,这个过滤工作有点难受)
作者: nwdxlgzs    时间: 2019-2-12 21:57

简单的说,就是一个以注册样式的文本创建程序,但是需要给程序添佐料
作者: Batcher    时间: 2019-2-12 22:40

set "errorlevel=0"
这个命令是多余的
errorlevel是个默认的系统环境变量
作者: Batcher    时间: 2019-2-12 22:42

功能类似的代码段可以考虑合并成一个子函数,例如:
注册录入账号、注册录入密码
账号输入判断模块、密码输入判断模块
作者: nwdxlgzs    时间: 2019-2-12 23:03

回复 7# Batcher


   是用同一模块,然后在录入时额外设一个函数吗,这样腾出一个函数做同样的判断?

顺道问一下,这个代码注册效果如何(这几天都可能用不了电脑)
作者: nwdxlgzs    时间: 2019-2-13 14:27

回复 7# Batcher
暂时不弄了,今天试了试代码,现在改进了,已解决
作者: nwdxlgzs    时间: 2019-2-13 14:29

回复 6# Batcher


    最终用了一个if的嵌套解决了,至少这样操作心里有谱(各个方式检测)
作者: nwdxlgzs    时间: 2019-2-13 15:05

  1. @echo off
  2. :初始化
  3. if not exist "非法字符验证容器.ini" cd.>非法字符验证容器.ini
  4. setlocal enabledelayedexpansion
  5. title=用户注册端
  6. set "returna=0"
  7. set "returnb=0"
  8. set "returnc=0"
  9. :声明
  10. echo=声明
  11. echo=——————————————————————————
  12. echo=抱歉,为了便利程序开发,注册端没有GUI界面。
  13. echo=注册也就一次的事,往后您不会一直面对命令行操作的。
  14. echo=(强行找借口掩饰,Emmm)
  15. echo=注册端没有恶意代码,请放心使用。
  16. echo=——————————————————————————
  17. echo=按任意键跳过10秒声明的等待
  18. timeout 10 >nul
  19. :注册录入账号
  20. CLS
  21. echo=验值提示框
  22. echo=^+———————————^+
  23. if "!returna!"=="0" if "!returnb!"=="0" if "!returnc!"=="0" echo=^|暂无消息              ^|
  24. if "!returna!"=="1" echo=^|请输入8位以上的字符^!   ^|
  25. if "!returnb!"=="1" echo=^|请输入20位以内的字符^!  ^|
  26. if "!returnc!"=="1" echo=^|出现非法字符^!          ^|
  27. echo=^+———————————^+
  28. ::账号输入
  29. set /p typeaccount=注册账号:
  30. ::账号输入判断模块
  31. if "!typeaccount:~7,1!"=="" (set "returna=1"&set "returnc=0"&set "returnb=0"&goto 注册录入账号) else (set "returnc=0"&set "returnb=0"&set "returna=0")
  32. if "!typeaccount:~20,1!" neq "" (set "returnb=1"&goto 注册录入账号) else (set "returnb=0")
  33. ren "非法字符验证容器.ini" "!typeaccount!.ini"
  34. if not exist "非法字符验证容器.ini" (if exist "!typeaccount!.ini" (set "returnc=0) else (set "returnc=1"&goto 注册录入账号)) else (set "returnc=1"&goto 注册录入账号)
  35. echo=账号符合要求。
  36. ::判断参数归零
  37. ren "!typeaccount!.ini" "非法字符验证容器.ini"
  38. set "returna=0"
  39. set "returnb=0"
  40. set "returnc=0"
  41. :注册录入密码
  42. CLS
  43. echo=您正为!typeaccount!账号设置密码
  44. echo=验值提示框
  45. echo=^+———————————^+
  46. if "!returna!"=="0" if "!returnb!"=="0" if "!returnc!"=="0" echo=^|暂无消息              ^|
  47. if "!returna!"=="1" echo=^|请输入8位以上的字符^!   ^|
  48. if "!returnb!"=="1" echo=^|请输入20位以内的字符^!  ^|
  49. if "!returnc!"=="1" echo=^|出现非法字符^!          ^|
  50. echo=^+———————————^+
  51. ::密码输入
  52. set /p typepassword=输入密码:
  53. ::密码输入判断模块
  54. if "!typepassword:~7,1!"=="" (set "returna=1"&goto 注册录入密码) else (set "returnc=0"&set "returnb=0"&set "returna=0")
  55. if "!typepassword:~20,1!" neq "" (set "returnb=1"&set "returnc=0"&set "returnb=0"&goto 注册录入密码) else (set "returnb=0")
  56. ren "非法字符验证容器.ini" "!typepassword!.ini"
  57. if not exist "非法字符验证容器.ini"(if exist "!typepassword!.ini" (set "returnc=0") else (set "returnc=1"&goto 注册录入密码)) else (set "returnc=1"&goto 注册录入账号)
  58. echo=密码符合要求
  59. ::残留处理
  60. CLS
  61. ren "!typepassword!.ini" "非法字符验证容器.ini"
  62. set "returna=0"
  63. set "returnb=0"
  64. set "returnc=0"
  65. del /f /q 非法字符验证容器.ini
  66. set "errorlevel=0"
  67. :创建用户
  68. echo=您的账号是!typeaccount!
  69. echo=您的密码是!typepassword!
  70. echo=请您牢记。
  71. echo=写入数据中。
  72. echo [用户信息]>!typeaccount!.ini
  73. echo 账号=!typeaccount!>>!typeaccount!.ini
  74. echo 密码=!typepassword!>>!typeaccount!.ini
  75. echo 注册日期=!date!!time!>>!typeaccount!.ini
  76. echo.>>!typeaccount!.ini
  77. echo [编译支持]>>!typeaccount!.ini
  78. xcopy /c /y "!typeaccount!.ini" %~dp0用户\
  79. del /f /q "!typeaccount!.ini"
复制代码





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