我有一个批处理
- :startSection
- @echo off & setlocal enabledelayedexpansion
- cls
- set /a item=9
- for /r .\ %%c in (*.exe) do (
- set /a item+=1
- )
- mode con: cols=45 lines=!item!
- set "table=0123456789abcdefghijklmnopqrstuvwyz"&set i=0
- for /l %%b in (1,1,30) do (set k= !k!)
- echo ╔┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╗
- echo ┋ EXE文件选择器,输入字母后请按下回车键 ┋
- echo ┋ ┋
- for /r .\ %%a in (*.exe) do (
- call set a=%%table:~!i!,1%%
- IF %0=="%%a" (
- rem No Operation
- ) ELSE (
- set e!a!="%%a"
- set temp=%%~na%k%
- echo ┋ ^(!a!^) !temp:~0,30! ┋
- set /a i+=1
- )
- )
- set ex=exit/b
- echo ┋ ┋
- echo ┋ (x) Exit ┋
- echo ┋ 感谢使用本软件(by Sniperhgy)┋
- echo ┋ QQ:754972247 ┋
- echo ╚┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╝
- set /p select=Plz choose:
- !e%select%!
- goto startSection
复制代码
作用是遍历当前目录下的所有exe文件,然后生成菜单,以供调用。
其中为了整齐,用了添加空格的代码(补满30个字符),但是这样
一来,当文件明中有中文时,就会出现不整齐的现象(因为中文是
2个字节,一个字符,不上空格后,就长出来了)
,针对这种情况,请教了高手之后,我对代码作出了修改
- :startSection
- @echo off & setlocal enabledelayedexpansion
- cls
- set "table=0123456789abcdefghijklmnopqrstuvwyz"&set i=0
- echo ╔┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╗
- echo ┋ EXE文件选择器,输入字母后请按下回车键 ┋
- echo ┋ ┋
- for /r .\ %%a in (*.exe) do (
- call set a=%%table:~!i!,1%%
- IF %0=="%%a" (
- rem No Operation
- ) ELSE (
- set e!a!="%%a"
- for /f "skip=1 delims=:" %%i in ('^(echo."%%~na"^&echo.^)^|findstr /o .') do (
- set /a Bytes=35-%%i
- )
- for /l %%b in (1,1,!Bytes!) do (set k= !k!)
- set temp=%%~na!k!
- set "k="
- echo ┋ ^(!a!^) !temp:~0,30! ┋
- set /a i+=1
- )
- )
- set ex=exit/b
- echo ┋ ┋
- echo ┋ (x) Exit ┋
- echo ┋ 感谢使用本软件(by Sniperhgy)┋
- echo ┋ QQ:754972247 ┋
- echo ╚┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╝
- set /p select=Plz choose:
- !e%select%!
- goto startSection
复制代码
现在可以部分解决中文的问题了,但是还是有不少
毛病,最突出的就是效率太低,真是一行一行打出来的
,还有就是如果文件明中有中文且大于35字节,就会出
问题,我想请教知道的朋友,怎样才能提高这段代码的
效率,顺便求一下35字节的解决方法(这个倒是不着急
,大不了都改成35个字节一下就好了,关键就是效率
问题)
[ 本帖最后由 sniperhgy 于 2009-6-27 14:59 编辑 ] |