http://bbs.bathome.cn/viewthread.php?tid=2618&page=1&extra=
给当前批处理“打包”
代码如下:
@echo off
::批处理给当前其他批处理打包,通过修改的话还能扩展很多功能.利用了一些特效中的技巧.
::blog hi.baidu.com/523066680
::made by 523066680@cn-dos.net 和bbs.bathome.cn
set pname=SetupBat.bat
for %%a in (*.bat) do (
if not "%%a"=="%~nx0" (
if not "%%a"=="%pname%" (call,set file="%%a" %%file%%)
)
)
echo,@set file=%file%>"%pname%"
set "act="
::重定向 执行部分
for /f "delims= eol=" %%a in (%~snx0) do (
if "%%a"=="::%pname% end" (goto :next)
if defined act echo,%%a>>"%pname%"
if "%%a"=="::%pname%" set act=act
)
:next
::- - - - - - -重定向内容 - - - - - - - -
for %%a in (*.bat) do (
if not "%%a"=="%~nx0" (
if not "%%a"=="%pname%" (
echo,::%%a>>"%pname%"
type "%%a">>"%pname%"
echo,>>"%pname%"
echo,::%%a end>>"%pname%"
)
)
)
::- - - - - - - - - - - - - - - - - - - -
if not exist %~sdp0tempfolder (md %~sdp0\tempfolder)
move "%pname%" "%~sdp0tempfolder\"
exit
::SetupBat.bat
@echo off
for %%a in (%file%) do (call :setup %%~a)
exit
:setup
set "act="
for /f "delims= eol=" %%a in (%~nx0) do (
if "%%a"=="::%* end" (goto :eof)
if defined act echo,%%a>>"%*"
if "%%a"=="::%*" errcommand>"%*" 2>nul&set act=act
)
::SetupBat.bat end
它可以干什么呢?可以给当前除本身以外的批处理打包(改改的话其他文本类文件也行)
生成一个SetupBat.bat 在tempfolder文件夹内
在另一个文件夹里双击它(以防出错),就会把之前“打包”的批处理全都解放出来,就像是解压缩一样。
以后我发多个批处理的帖子就不用上传拉压缩文件拉.把打包的批处理代码贴上去就可以了。
优点:使用上个帖子 批处理分段重定向 (节省echo版) 的原理,生成的时候不会存在echo,结合>>出现的特殊字符问题。
不用慢慢测试然后加转义字符^了,更不用一长串地echo,x>x.x了
1我的观点:
a.当作备份使用,把自己经典的批处理打包起来,就合成了一个文件,然后可以很方便的存放,上传到网络上,
发表文章,这些都可以作为备份方式.
b.以文本形式上传/发表的话就更容易复制/粘贴代码.
c.可以通过打包再打包的方法实现分类打包功能,例如我自己做了一个:5230综合.bat 里面包含有三个子包裹
5230应用类.bat 5230视觉类.bat 5230数值计算类.bat 这几个包裹打开后生成各自包括的批处理作品。
2延展:这个版本的我没做太多功能,不过我认为还可以做成:
a.由用户指定 生成某个文件(段落),生成在哪个文件夹里.
b.如果拿来做坏事也是可怕的。
c.利用这个批处理的性质,还可以很方便的给每个打包后的批处理增加一个文件头信息,例如制作者的信息
或者把SetupBat.bat代码设置成可以由用户设置在文件的开头加上什么注释。
也相当于完成一些批量的操作呢。
d.可以改成对多类文本、脚本的。更深点,能完成这样的功能:
把所有脚本、文本文件以及其位置记录起来,类似压缩目录树,再解压缩一样.而重定向并不会影响其他文件.
当然用batch做这个事儿总怕在符号上有风险。
…………………等等等等
以下是我的批处理集合打包的例子:(是对原来的帖子进行的修正……)
http://bbs.bathome.cn/viewthread.php?tid=1627&highlight=%2B523066680
Last edited by 523066680 on 2008-12-27 at 17:43 ]