青青草 发表于 2021-7-2 12:49:28

批处理系列2:多彩文字

本帖最后由 青青草 于 2021-7-2 15:18 编辑

完整代码:@ECHO OFF
   Title 电脑维护
   mode con lines=32 cols=72
   color 1f
   setlocal enabledelayedexpansion
   for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (set "DEL=%%a")
cls
    echo.
    call :ColorText 1C "                              电脑维护菜单"
    echo.
    echo.
    echo.
    call :ColorText 1B "       磁盘管理               系统维护               映像管理"
    echo.
    echo.
    echo.
    call :ColorText 1F "01. 将整个磁盘分区      11. 重新 安装 系统       21. 查看映像的信息"
    echo.
    echo.
    call :ColorText 1F "02. 删除指定的分区      12. 完整 备份 系统       22. 将镜像重新命名"
    echo.
    echo.
    call :ColorText 1F "03. 创建指定的分区      13. 增量 备份 系统       23. 提取指定的镜像"
    echo.
    echo.
    call :ColorText 1F "04. 回收分区的空间      14. 还原以前的系统       24. 删除指定的镜像"
    echo.
    echo.
    call :ColorText 1F "05. 扩容分区的容量      15. 修复 系统 引导       25. 装载并修改镜像"
    echo.
    echo.
    call :ColorText 1F "06. 格式化指定分区      16. 添加或删除驱动       26. 创建可启动映像"
    echo.
    echo.
    call :ColorText 1F "07. 显示或隐藏分区      17. 备份或还原驱动       27. 完整备份文件夹"
    echo.
    echo.
    call :ColorText 1F "08. 管理分区的盘符      18. 查看 驱动 程序       28. 还原映像到目录 "
    echo.
    echo.
    call :ColorText 1F "09. 管理分区的图标      19. 集成 系统 补丁       29. WIM 与 ESD互转"
    echo.
    echo.
    call :ColorText 1F "10. 设置分区为只读      20. 系统检查与修复 "   
    call :ColorText 1C "       30. 退 "       
    call :ColorText 1A " 出"
    call :ColorText 1E " 批"
    call :ColorText 1D " 处"
    call :ColorText 1B " 理"
    echo.
    echo.
        call :ColorText 1A "      温馨提醒:下面每一步操作, 请按回车键确认!"
    echo.
echo.
    echo.
    call :ColorText 1E " 请输入您选择的菜单序号"
    set /p w=:
    echo %w%|findstr "^0">nul && set w=%w:~1,1%
    echo.
    for /l %%i in (1 1 30) do if %w%==%%i goto %%i
    echo.
    call :ColorText 1B "   输错了!请重新输入!"
    echo.
:ColorText
    <nul set /p "=%DEL%" > "%~2"
    findstr /v /a:%1 /R "+" "%~2" nul
    del "%~2" > nul
    goto :eof

bjay2008xmy 发表于 2021-7-2 13:17:20

青青草 发表于 2021-7-2 13:30:44

bjay2008xmy 发表于 2021-7-2 13:17
findstr/a后面缺少参数

你不妨试一下。

bjay2008xmy 发表于 2021-7-2 13:46:17

plusv 发表于 2021-7-2 14:17:58

本帖最后由 plusv 于 2021-7-2 15:03 编辑

于 Windows XP/7测试通过.




bjay2008xmy 发表于 2021-7-2 14:25:27

flyingdancex 发表于 2021-7-2 14:25:27

青青草 发表于 2021-7-2 13:30
你不妨试一下。

Win10下确实是这个提示

青青草 发表于 2021-7-2 15:19:38

bjay2008xmy 发表于 2021-7-2 13:17
findstr/a后面缺少参数

还是完整代码给你们吧!

青青草 发表于 2021-7-2 15:19:58

bjay2008xmy 发表于 2021-7-2 13:17
findstr/a后面缺少参数

还是完整代码给你们吧!

青青草 发表于 2021-7-2 15:20:30

bjay2008xmy 发表于 2021-7-2 13:46
试过了,正是因为有错误提示

还是完整代码给你们吧!

青青草 发表于 2021-7-2 15:21:13

bjay2008xmy 发表于 2021-7-2 13:46
试过了,正是因为有错误提示

还是完整代码给你们吧!

青青草 发表于 2021-7-2 15:22:07

flyingdancex 发表于 2021-7-2 14:25
Win10下确实是这个提示

还是完整代码给你们吧!

青青草 发表于 2021-7-2 15:22:32

bjay2008xmy 发表于 2021-7-2 14:25
奇怪,我WIN7运行的时候就提示findstr/a后面缺少参数
这个批处理没有@echo off语句,还是我自己加上去 ...

还是完整代码给你们吧!

bjay2008xmy 发表于 2021-7-2 15:45:07

junyee 发表于 2021-7-2 16:38:16

这个在当年的 cn-dos 论坛玩得很滥了,有一定局限性,不能出现某些字符。

不过比外挂或内嵌二进制的更方便通用。


plusv 发表于 2021-7-2 16:49:04

junyee 发表于 2021-7-2 16:38
这个在当年的 cn-dos 论坛玩得很滥了,有一定局限性,不能出现某些字符。

不过比外挂或内嵌二进制的更方 ...

>这个在当年的 cn-dos 论坛玩得很滥了,有一定局限性,不能出现某些字符。
+1.

這句
call :ColorText 1A "      温馨提醒:下面每一步操作, 请按回车键确认!"

我在 繁体 Windows XP/7 测试后才发现,改了就有问题.

qq叔 发表于 2021-7-2 20:15:43

学习了!!

青青草 发表于 2021-7-3 16:06:57

plusv 发表于 2021-7-2 16:49
>这个在当年的 cn-dos 论坛玩得很滥了,有一定局限性,不能出现某些字符。
+1.



改了什么特殊字符出现问题?我怎么就碰不到呢?

sshyqcnssdy 发表于 2021-7-4 02:44:58

技术贴支持一下

plusv 发表于 2021-7-4 03:40:43

青青草 发表于 2021-7-3 16:06
改了什么特殊字符出现问题?我怎么就碰不到呢?

改一个字就报错.你用附件测试.


正常版:




改一个字就报错版:



青青草 发表于 2021-7-4 10:56:07

plusv 发表于 2021-7-4 03:40
改一个字就报错.你用附件测试.




你知道错的原因吗?

青青草 发表于 2021-7-4 18:16:07

本帖最后由 青青草 于 2021-7-4 20:06 编辑

plusv 发表于 2021-7-4 03:40
改一个字就报错.你用附件测试.



中文环境,故意用了英文冒号,让电脑来识别?你真会想。

zhouaga 发表于 2021-7-4 18:38:03

@ECHO OFF
Title 电脑维护菜单
mode con lines=32 cols=72
color 1f
setlocal enabledelayedexpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (set "DEL=%%a")

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"


:start
cls
echo.
call :ColorText 1C "                              电脑维护菜单"
echo.
echo.
echo.
call :ColorText 1B "       磁盘管理               系统维护               映像管理"
echo.
echo.
echo.
call :ColorText 1F "01. 将整个磁盘分区      11. 重新 安装 系统       21. 查看映像的信息"
echo.
echo.
call :ColorText 1F "02. 删除指定的分区      12. 完整 备份 系统       22. 将镜像重新命名"
echo.
echo.
call :ColorText 1F "03. 创建指定的分区      13. 增量 备份 系统       23. 提取指定的镜像"
echo.
echo.
call :ColorText 1F "04. 回收分区的空间      14. 还原以前的系统       24. 删除指定的镜像"
echo.
echo.
call :ColorText 1F "05. 扩容分区的容量      15. 修复 系统 引导       25. 装载并修改镜像"
echo.
echo.
call :ColorText 1F "06. 格式化指定分区      16. 添加或删除驱动       26. 创建可启动映像"
echo.
echo.
call :ColorText 1F "07. 显示或隐藏分区      17. 备份或还原驱动       27. 完整备份文件夹"
echo.
echo.
call :ColorText 1F "08. 管理分区的盘符      18. 查看 驱动 程序       28. 还原映像到目录 "
echo.
echo.
call :ColorText 1F "09. 管理分区的图标      19. 集成 系统 补丁       29. WIM 与 ESD互转"
echo.
echo.
call :ColorText 1F "10. 设置分区为只读      20. 系统检查与修复 "   
call :ColorText 1C "       30. 退 "      
call :ColorText 1A " 出"
call :ColorText 1E " 批"
call :ColorText 1D " 处"
call :ColorText 1B " 理"
echo.
echo.
mshta vbscript:createobject("sapi.spvoice").speak("温馨提醒:下面每一步操作, 请按回车键确认")(window.close)
call :ColorText 1A "      温馨提醒:下面每一步操作, 请按回车键确认!"
echo.
echo.
echo.
call :ColorText 1E " 请输入您选择的菜单序号"
set /p w=:
echo %w%|findstr "^0">nul && set w=%w:~1,1%
echo.
for /l %%i in (1 1 30) do if %w%==%%i goto %%i
echo.
CLS
ECHO.
ECHO.
ECHO 输入有误,按任意键返回主菜单。
PAUSE >nul
goto start
echo.
:ColorText
<nul set /p "=%DEL%" > "%~2"
findstr /v /a:%1 /R "+" "%~2" nul
del "%~2" > nul
goto :eof

:1
cls
::测试
netsh interface ip set address name="以太网" source=static 10.0.0.219 255.0.0.0 10.0.0.1
netsh interface ip set dns "以太网" source=static 114.114.114.114 >nul
netsh interface ip add dns name="以太网" addr=223.5.5.5 validate=no
echo **正常上网成功**
echo ------------------------------------------
pause
goto start测试了下,挺好了,感谢楼主!

青青草 发表于 2021-7-4 19:55:04

zhouaga 发表于 2021-7-4 18:38
测试了下,挺好了,感谢楼主!

能用就好,不用客气。

青青草 发表于 2021-7-5 09:42:47

junyee 发表于 2021-7-2 16:38
这个在当年的 cn-dos 论坛玩得很滥了,有一定局限性,不能出现某些字符。

不过比外挂或内嵌二进制的更方 ...

够用就行,要十全十美很难!

plusv 发表于 2021-7-5 15:52:32

青青草 发表于 2021-7-4 18:16
中文环境,故意用了英文冒号,让电脑来识别?你真会想。

你可看我发的所有文,
我都使用英文符号,
在 OS 上,
我也全部使用英文符号.

另外,
以显示功能来说,
MS OS 可以用,
这个批处理就显示功能来说不能用,
这逻辑不是很奇怪.



plusv 发表于 2021-7-5 15:57:45

青青草 发表于 2021-7-4 10:56
你知道错的原因吗?

知道.

分析它运行思路就知道原因了,
只能闪它的缺点.

自写程式解决:
完美解决.
功能扩展.
运行速度提升.

青青草 发表于 2021-7-5 18:33:01

plusv 发表于 2021-7-5 15:57
知道.

分析它运行思路就知道原因了,


一般而言,输入中文时,不会刻意切换成英文,输入标点,再切换回中文,继续输入。所以,你的情况一般不会出现。除非故意。

青青草 发表于 2021-7-5 18:35:06

青青草 发表于 2021-7-5 18:33
一般而言,输入中文时,不会刻意切换成英文,输入标点,再切换回中文,继续输入。所以,你的情况一般不会 ...

再说了,中文用英文标点符号,也不符合逻辑。

plusv 发表于 2021-7-5 18:40:57

青青草 发表于 2021-7-5 18:35
再说了,中文用英文标点符号,也不符合逻辑。

每个人使用习惯不同,
我是不认同你的说法,
如你所说,
中文 OS 只能中文,
英文 OS 只能英文.
页: [1] 2
查看完整版本: 批处理系列2:多彩文字