标题: [文本处理] 【已解决】求大佬写一个随机输出指定txt文本行的bat [打印本页]
作者: kokoxx 时间: 2024-1-17 13:11 标题: 【已解决】求大佬写一个随机输出指定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
作者: ShowCode 时间: 2024-1-20 13:33
第1步.bat- @echo off
- chcp 65001 >nul
-
- :GetInput
- set /p "InFile=请输入文件:"
- if not exist "%InFile%" (
- echo 文件不存在
- goto :GetInput
- )
- for /f "delims=" %%i in ('type "%InFile%"') do (
- echo,%%i
- timeout /t 3 >nul
- )
复制代码
作者: kokoxx 时间: 2024-1-20 14:19
回复 2# ShowCode
大佬,测试代码可用,就是能不能给输出字体加上颜色和字体变化?
作者: ShowCode 时间: 2024-1-20 18:01
回复 3# kokoxx
第2步.bat- @echo off
- chcp 65001 >nul
- for /f %%i in ('echo prompt $E ^| cmd') do (
- set "KeyESC=%%i"
- )
- :GetInput
- set /p "InFile=请输入文件:"
- if not exist "%InFile%" (
- echo 文件不存在
- goto :GetInput
- )
- for /f "delims=" %%i in ('type "%InFile%"') do (
- echo %KeyESC%[38;2;0;255;0m%%i
- timeout /t 3 >nul
- )
复制代码
作者: kokoxx 时间: 2024-1-20 18:50
本帖最后由 kokoxx 于 2024-1-20 19:23 编辑
测试后,很好用,谢谢
作者: kokoxx 时间: 2024-1-20 20:00
回复 4# ShowCode
大佬,刚发现一个问题,那就是你的bat脚本输出文本是按顺序从上到下而不是随机输出……
作者: ShowCode 时间: 2024-1-21 10:33
回复 6# kokoxx
第3步.bat- @echo off
- chcp 65001 >nul
- setlocal enabledelayedexpansion
- for /f %%i in ('echo prompt $E ^| cmd') do (
- set "KeyESC=%%i"
- )
-
- :GetInput
- set /p "InFile=请输入文件:"
- if not exist "%InFile%" (
- echo 文件不存在
- goto :GetInput
- )
-
- :StoreRand
- for /f "delims=" %%i in ('type "%InFile%"') do (
- set "_!random!=%%i"
- )
-
- :ShowRand
- for /f "tokens=1* delims==" %%a in ('set _') do (
- echo %KeyESC%[38;2;0;255;0m%%b
- timeout /t 3 >nul
- )
- endlocal
复制代码
作者: kokoxx 时间: 2024-1-21 11:28
回复 7# ShowCode
多谢大佬出手!
作者: czjt1234 时间: 2024-1-21 12:07
厉害厉害,完全看不懂
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |