比这篇新的文章:
Codee#21747
比这篇旧的文章: Codee#21728
作者: chenall, 点击529次, 评论(0), 收藏者(0), , 打分:
所有评论,共0条:( 我也来说两句)
比这篇旧的文章: Codee#21728
GRUB4DOS 文件列表菜单
语言: Batchfile, 标签: GRUB4DOS 批处理 模块 2011/08/11发布 7个月前更新 更新记录作者: chenall, 点击529次, 评论(0), 收藏者(0), , 打分:
Batchfile语言: GRUB4DOS 文件列表菜单
001 !BAT
002 setlocal
003 debug off
004 checkrange 20110918:-1 read 0x8278 || echo Please use grub4dos-0.4.5b-2011-09-18 or above! && exit 1
005 if "%1"=="" goto :参数检测
006 set *
007 :获取参数
008 if /i "%1"=="" && goto :参数检测
009 set m.%~1=%~2
010 shift 1
011 shift 1
012 goto :获取参数
013
014 :help
015 echo Usage: %0 cmd="cmd for each file" OPTIONS..
016 echo OPTIONS:
017 echo -e \t title="the main menu title"
018 echo -e \t menu="pre_set menu file"
019 echo -e \t subdir=n
020 echo -e \t devs="find parameters"
021 echo -e \t return="return cmd"
022 echo -e \t init="init cmd"
023 echo -e \t filpre=filepre
024 echo -e \t ext=fileext
025 echo -e \t root="root dir. e.g. ()/boot/"
026 echo -e \n\t for more please visit http://chenall.net
027 exit
028
029 :菜单居中
030 set title=屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯
031 set title=%title:~0,%1%%
032 exit
033
034 :参数检测
035 if not exist m.cmd && goto :help
036 if not exist m.title && set m.title=Please select a file
037 if not exist m.menu && set m.menu=(md)0x210+16 && echo -e default 1\ndebug off > (md)0x210+16
038 if not exist m.subdir && set m.subdir=1
039 if not exist m.devs && set m.devs=--set-root
040 if not exist m.root && set m.root=()
041 echo -e !BAT\necho %m.cmd% \>\> %m.menu% > (md)0x260+4
042 ::获取标题字符数量用于标题居中
043 set title=%m.title%
044 set /a title=68-*0x4CB00>>1
045 call :菜单居中 %title%
046 ::自动生成菜单
047 set ?_n=1
048 set m.info=File list menu for grub4dos by chenall.\n\t\t for more information please visit http://chenall.net
049 if exist m.init && echo %m.init% >> %m.menu%
050 echo title %title% %m.title% %title%\n\n\t%m.info% >> %m.menu%
051 echo pause %m.info% >> %m.menu%
052 echo -e $[0106] %m.info%
053 echo $[0102] Please wait ...
054 echo $[1105] Working......
055 root %m.root%
056 if exist m.debug echo %@time%
057 find %m.devs% call :生成文件列表 || echo Unknow Error.
058 if exist m.debug pause %@time%
059 echo title 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯 http://chenall.net 屯 2011-08-22 屯\n\n\t%m.info% >> %m.menu%
060 echo pause %m.info% >> %m.menu%
061 set ?_n=
062 if not exist m.return && configfile %m.menu%
063 echo title 0. Return >> %m.menu%
064 echo %m.return% >> %m.menu%
065 echo boot >> %m.menu%
066 configfile %m.menu%
067 exit
068
069 :文件过滤
070 if "%~1"=="" exit
071 set tmp=%1
072 shift
073 if "%tmp:~-2,1%"=="~" && goto :文件过滤
074 if "%tmp:~0,1%"=="$" && goto :文件过滤
075 call :检测文件 %0
076 goto :文件过滤
077
078 :获取文件大小
079 calc *0x8290>>30 && set size=30GB && exit
080 calc *0x8290>>20 && set size=20MB && exit
081 calc *0x8290>>10 && set size=10KB && exit
082 set size=00B
083 exit
084
085 :检测文件
086 if exist m.debug1 && echo %~f1
087 ::检测前辍
088 call Fn.10 "%m.filpre%" "%~n1"
089 if "%@retval%"=="1" && goto :检测目录
090 ::检测后辍
091 if exist m.ext || goto :添加菜单
092 set f.type=%~x1
093 if not exist f.type set f.type=.
094 call :过滤 %m.ext% && goto :添加菜单
095
096 :检测目录
097 if %m.subdir%==0 && exit
098 if exist m.dirext || if "%~x1"=="" || exit
099 cat --length=0 /%1 && exit
100 if exist m.debug2 && echo $[0101] %~f1
101 goto :生成文件列表
102
103 :过滤
104 if "%1"=="" && exit 1
105 shift
106 if /i "%0"=="%f.type%" || goto :过滤
107 exit
108
109 :添加菜单
110 cat --length=0 /%1 || goto :检测目录
111 call :获取文件大小
112 if exist m.debug3 && echo $[0102] %~f1
113 calc *0x8290=*0x8290>>%size:~0,2%
114 set size=%@retval% %size:~2%
115 set m=1 %?_n%
116 echo title %m:~-3%. %~f1\n\n\t~%size% %~f1 >> %m.menu%
117 (md)0x260+4 %~f1
118 echo boot >> %m.menu%
119 set /a ?_n=%?_n%+1
120 exit
121
122 :生成文件列表
123 setlocal
124 if "%~1"=="" || root %~f1
125 set /a m.subdir=%m.subdir%-1
126 ls | call :文件过滤= || echo
127 endlocal
128 exit
002 setlocal
003 debug off
004 checkrange 20110918:-1 read 0x8278 || echo Please use grub4dos-0.4.5b-2011-09-18 or above! && exit 1
005 if "%1"=="" goto :参数检测
006 set *
007 :获取参数
008 if /i "%1"=="" && goto :参数检测
009 set m.%~1=%~2
010 shift 1
011 shift 1
012 goto :获取参数
013
014 :help
015 echo Usage: %0 cmd="cmd for each file" OPTIONS..
016 echo OPTIONS:
017 echo -e \t title="the main menu title"
018 echo -e \t menu="pre_set menu file"
019 echo -e \t subdir=n
020 echo -e \t devs="find parameters"
021 echo -e \t return="return cmd"
022 echo -e \t init="init cmd"
023 echo -e \t filpre=filepre
024 echo -e \t ext=fileext
025 echo -e \t root="root dir. e.g. ()/boot/"
026 echo -e \n\t for more please visit http://chenall.net
027 exit
028
029 :菜单居中
030 set title=屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯
031 set title=%title:~0,%1%%
032 exit
033
034 :参数检测
035 if not exist m.cmd && goto :help
036 if not exist m.title && set m.title=Please select a file
037 if not exist m.menu && set m.menu=(md)0x210+16 && echo -e default 1\ndebug off > (md)0x210+16
038 if not exist m.subdir && set m.subdir=1
039 if not exist m.devs && set m.devs=--set-root
040 if not exist m.root && set m.root=()
041 echo -e !BAT\necho %m.cmd% \>\> %m.menu% > (md)0x260+4
042 ::获取标题字符数量用于标题居中
043 set title=%m.title%
044 set /a title=68-*0x4CB00>>1
045 call :菜单居中 %title%
046 ::自动生成菜单
047 set ?_n=1
048 set m.info=File list menu for grub4dos by chenall.\n\t\t for more information please visit http://chenall.net
049 if exist m.init && echo %m.init% >> %m.menu%
050 echo title %title% %m.title% %title%\n\n\t%m.info% >> %m.menu%
051 echo pause %m.info% >> %m.menu%
052 echo -e $[0106] %m.info%
053 echo $[0102] Please wait ...
054 echo $[1105] Working......
055 root %m.root%
056 if exist m.debug echo %@time%
057 find %m.devs% call :生成文件列表 || echo Unknow Error.
058 if exist m.debug pause %@time%
059 echo title 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯 http://chenall.net 屯 2011-08-22 屯\n\n\t%m.info% >> %m.menu%
060 echo pause %m.info% >> %m.menu%
061 set ?_n=
062 if not exist m.return && configfile %m.menu%
063 echo title 0. Return >> %m.menu%
064 echo %m.return% >> %m.menu%
065 echo boot >> %m.menu%
066 configfile %m.menu%
067 exit
068
069 :文件过滤
070 if "%~1"=="" exit
071 set tmp=%1
072 shift
073 if "%tmp:~-2,1%"=="~" && goto :文件过滤
074 if "%tmp:~0,1%"=="$" && goto :文件过滤
075 call :检测文件 %0
076 goto :文件过滤
077
078 :获取文件大小
079 calc *0x8290>>30 && set size=30GB && exit
080 calc *0x8290>>20 && set size=20MB && exit
081 calc *0x8290>>10 && set size=10KB && exit
082 set size=00B
083 exit
084
085 :检测文件
086 if exist m.debug1 && echo %~f1
087 ::检测前辍
088 call Fn.10 "%m.filpre%" "%~n1"
089 if "%@retval%"=="1" && goto :检测目录
090 ::检测后辍
091 if exist m.ext || goto :添加菜单
092 set f.type=%~x1
093 if not exist f.type set f.type=.
094 call :过滤 %m.ext% && goto :添加菜单
095
096 :检测目录
097 if %m.subdir%==0 && exit
098 if exist m.dirext || if "%~x1"=="" || exit
099 cat --length=0 /%1 && exit
100 if exist m.debug2 && echo $[0101] %~f1
101 goto :生成文件列表
102
103 :过滤
104 if "%1"=="" && exit 1
105 shift
106 if /i "%0"=="%f.type%" || goto :过滤
107 exit
108
109 :添加菜单
110 cat --length=0 /%1 || goto :检测目录
111 call :获取文件大小
112 if exist m.debug3 && echo $[0102] %~f1
113 calc *0x8290=*0x8290>>%size:~0,2%
114 set size=%@retval% %size:~2%
115 set m=1 %?_n%
116 echo title %m:~-3%. %~f1\n\n\t~%size% %~f1 >> %m.menu%
117 (md)0x260+4 %~f1
118 echo boot >> %m.menu%
119 set /a ?_n=%?_n%+1
120 exit
121
122 :生成文件列表
123 setlocal
124 if "%~1"=="" || root %~f1
125 set /a m.subdir=%m.subdir%-1
126 ls | call :文件过滤= || echo
127 endlocal
128 exit
所有评论,共0条:( 我也来说两句)
代码
