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

[其他] 能否在批处理中一个窗口多个线程运行程序

本帖最后由 蚯蚓传奇 于 2024-8-21 12:35 编辑

由于我做的聊天机器人运行时效率不够高,所以我打算改良一下程序,有人愿意合作吗,程序下载地址:https://pan.baidu.com/s/1EVcEEOxYHPtUDkAA1bfbVw?pwd=chat 提取码:chat
这是我第一次写比较复杂的软件,所以没有什么经验,还请多多指教

程序除了速度慢还有个问题就是因为这是我很早以前就开始写的嘛,那个时候搭建程序主体框架搭建的不够高效,导致现在有些bug修复不了。也欢迎加入我们这个项目,如果有兴趣可以加我qq(主页上有)一起探讨和开发

TOP

楼主为何不压缩下再上传...文件999+
bat小白,请多指教!谢谢!

TOP

本帖最后由 蚯蚓传奇 于 2024-8-21 12:36 编辑

回复 3# 77七


    现在试一下那个链接呢

TOP

回复 3# 77七


    对了,这个程序是我之前初始化好了的,如果要初始化只要把Chat\Chat\username.txt文件删了然后重启程序就行了

TOP

试试 start /b 能否满足
bat小白,请多指教!谢谢!

TOP

回复 6# 77七


    但是这样不就差不多是call文件的效果吗

TOP

回复 7# 蚯蚓传奇


   和call差别很大吧
start /?
  1. B           启动应用程序,但不创建新窗口。
复制代码


不是一个窗口多个线程的概念吗?
bat小白,请多指教!谢谢!

TOP

看了楼主的代码及文件,很多我看不懂的地方就其中我知道的,提几点建议
1.尽量少使用或者不使用临时文件


  1. set /p 版本=<"Chat\版本号.txt"set /p 日期=<"Chat\版本日期.txt"
复制代码

这两项完全可以放到一个文件中
再如 变换颜色,很简单的命令,楼主用了7个文件记录命令,从维护上来说也增加了不少工作量
2.重定向命令前置及合并
  1. echo %询问% >短语库.txt
复制代码


可以调整为
  1. >短语库.txt echo %询问%
复制代码


避免了内容结尾的空格。
对多个内容重定向可以写到一起
  1. (
  2. echo =========================
  3. echo Chat start time:%date:~0,10% %time%
  4. ) >> "Chat\Chat\chat.log"
复制代码


3.部分影响效率的用法
  1. type "短语库.txt" | find /i "@speak" >nul
  2. if %errorlevel% equ 0 (
  3.     goto speak
  4. )
  5. type "短语库.txt" | find /i "@set" >nul
  6. if %errorlevel% equ 0 (
  7.     goto set
  8. )
  9. type "短语库.txt" | find /i "@#set" >nul
  10. if %errorlevel% equ 0 (
  11.     goto set4
  12. )
复制代码


暂时可以改为写
  1. for %%a in ("speak" "set") do (
  2. find /i "@%%~a" <"短语库.txt" 1>nul
  3. if not errorlevel 1 (
  4. goto :%%~a
  5. )
  6. )
复制代码


应该能提高效率、及使代码更加简洁

4.变量的命名
楼主的变量命名使用了命令,如第3点中的 set4 @#set ,添加了#,避免了重复,但是含义不明晰,且不统一,应当避免使用系统命令命名,计算机语言中有很多变量命名方法,楼主可以学习一下,在这么长的脚本下,应该能起到作用。
1

评分人数

bat小白,请多指教!谢谢!

TOP

看了楼主的代码及文件,很多我看不懂的地方就其中我知道的,提几点建议
1.尽量少使用或者不使用临时文件
...
77七 发表于 2024-8-22 10:15



    谢谢你的建议,万分感激

TOP

返回列表