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

[文本处理] 【已解决】求大佬写一个随机输出指定txt文本行的bat

本帖最后由 kokoxx 于 2024-1-21 11:28 编辑

RT,这个bat会调用指定的txt(文件名和地址由用户直接在bat里通过路径指定,如果不写完整路径,就是bat同文件夹下的指定名称txt)

在这个txt里有很多文本行,用空行间隔

bat就是使用choice命令间隔3秒,随机输出txt里面的一个文本行(跳过txt里的空行)显示在bat的运行窗口,并且对应的文本行是绿色,字体在默认字体的基础上加大(字体加大的功能如果不能在bat里实现就算了)

然后bat输出过程中用户如果按下回车/空格键,则BAT的输出暂定,再按回车/空格键位就继续

对了,考虑到中文显示,所以bat和被操作的txt都不限定编码(至少要支持gb10830 gbk ansi和utf8)

先谢谢大佬了

测试样本
https://www.123pan.com/s/pbxrVv-v79Y.html
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

第1步.bat
  1. @echo off
  2. chcp 65001 >nul
  3. :GetInput
  4. set /p "InFile=请输入文件:"
  5. if not exist "%InFile%" (
  6.     echo 文件不存在
  7.     goto :GetInput
  8. )
  9. for /f "delims=" %%i in ('type "%InFile%"') do (
  10.     echo,%%i
  11.     timeout /t 3 >nul
  12. )
复制代码
测试代码之前请做好备份

TOP

回复 2# ShowCode


    大佬,测试代码可用,就是能不能给输出字体加上颜色和字体变化?

TOP

回复 3# kokoxx


第2步.bat
  1. @echo off
  2. chcp 65001 >nul
  3. for /f %%i in ('echo prompt $E ^| cmd') do (
  4.     set "KeyESC=%%i"
  5. )
  6. :GetInput
  7. set /p "InFile=请输入文件:"
  8. if not exist "%InFile%" (
  9.     echo 文件不存在
  10.     goto :GetInput
  11. )
  12. for /f "delims=" %%i in ('type "%InFile%"') do (
  13.     echo %KeyESC%[38;2;0;255;0m%%i
  14.     timeout /t 3 >nul
  15. )
复制代码
测试代码之前请做好备份

TOP

本帖最后由 kokoxx 于 2024-1-20 19:23 编辑

测试后,很好用,谢谢

TOP

回复 4# ShowCode


    大佬,刚发现一个问题,那就是你的bat脚本输出文本是按顺序从上到下而不是随机输出……

TOP

回复 6# kokoxx


第3步.bat
  1. @echo off
  2. chcp 65001 >nul
  3. setlocal enabledelayedexpansion
  4. for /f %%i in ('echo prompt $E ^| cmd') do (
  5.     set "KeyESC=%%i"
  6. )
  7. :GetInput
  8. set /p "InFile=请输入文件:"
  9. if not exist "%InFile%" (
  10.     echo 文件不存在
  11.     goto :GetInput
  12. )
  13. :StoreRand
  14. for /f "delims=" %%i in ('type "%InFile%"') do (
  15.     set "_!random!=%%i"
  16. )
  17. :ShowRand
  18. for /f "tokens=1* delims==" %%a in ('set _') do (
  19.     echo %KeyESC%[38;2;0;255;0m%%b
  20.     timeout /t 3 >nul
  21. )
  22. endlocal
复制代码
1

评分人数

测试代码之前请做好备份

TOP

回复 7# ShowCode

多谢大佬出手!

TOP

厉害厉害,完全看不懂

QQ 20147578

TOP

返回列表