Board logo

标题: [其他] 请教 批处理 set/p 获取输入时,怎么强调输入的字符? [打印本页]

作者: newswan    时间: 2021-10-22 18:44     标题: 请教 批处理 set/p 获取输入时,怎么强调输入的字符?

请教 批处理 set/p 获取输入时,怎么强调输入的字符?
比如 背景色,前景色?
  1. set/p var="input string : "
复制代码

作者: idwma    时间: 2021-10-22 20:03

本帖最后由 idwma 于 2021-10-22 20:07 编辑

http://www.bathome.net/thread-54470-1-1.html
只记得这个前景的,单行背景色不知道怎么改
  1. @echo off
  2. :get_key
  3. set key=
  4. for /f "delims=" %%a in ('xcopy /w "%~f0" "%~f0" 2^>nul') do (
  5.     cls
  6.     if not defined key set "key=%%a"
  7. )
  8. set key=%key:~-1%
  9. set ckey=%ckey%%key%
  10. set/p var="input string : "<nul
  11. echo. >%ckey%
  12. findstr /a:c "." %ckey%*
  13. del %ckey%
  14. if "%key%"=="" (goto :end) else (goto :get_key)
  15. :end
  16. echo %ckey%
  17. pause
复制代码

作者: newswan    时间: 2021-10-22 23:17

回复 2# idwma


谢谢,这种太麻烦了。
用 shell 那种方式最好
作者: newswan    时间: 2021-10-22 23:31

linux/unix 下
  1. echo -e "\033[31m 红色字 \033[0m"
复制代码

作者: newswan    时间: 2021-10-23 15:41

win10 支持 ansi 序列
https://c1ino.github.io/c1ino/2019/08-03-colored-echo-in-win10-command-prompt
  1. set _VTC_=[
  2. set/p _input_="  :: input  : %_VTC_%4m"
  3. echo %_VTC_%m
  4. echo %_input_%
复制代码

作者: cmd1152    时间: 2021-10-23 20:29

本帖最后由 cmd1152 于 2021-10-23 22:28 编辑

下一个Ecolor.exe5.0的
  1. @echo off
  2. call Ecolor.exe e6 "input string:"
  3. set /p var=
复制代码
Ecolor.exe只能显示字母和中文,所以冒号是中文的
作者: cmd1152    时间: 2021-10-23 20:42

本帖最后由 cmd1152 于 2021-10-23 21:37 编辑

Ecolor5.0下载
作者: cmd1152    时间: 2021-10-23 22:32

回复 2# idwma


    按错了,然后点了一下[退位](暗示存在的BUG)
   
input string : 文件名、目录名或卷标语法不正确。
FINDSTR: 无法打开 5621831*
文件名、目录名或卷标语法不正确。

作者: cmd1152    时间: 2021-10-23 22:34

回复 2# idwma


    还有一个缺点,运行路径如果有一个1开头的文件,那么输入1的时候就会Type那个文件,解决方法:新建一个文件夹当临时目录
作者: cmd1152    时间: 2021-10-23 22:40

本帖最后由 cmd1152 于 2021-10-23 22:41 编辑

回复 2# idwma


    findstr /a:这里是颜色标签,可以使用color /?获得标签,比如CF "." %ckey%*
    findstr /a:AC "." %ckey%*
作者: idwma    时间: 2021-10-24 15:58

回复 10# cmd1152


    学到了




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