批处理之家's Archiver

Wingl83 发表于 2008-8-6 12:51

将所在目录的BAT文件合并成一个BAT文件,通过选择运行其中之一

[code]@echo off

TITLE 将所在目录的BAT文件合并成一个"BAT结果",通过 选择 运行其中之一。QQ:309254515 趣味东

cd.>合并结果.bat

echo @echo off>首部.txt &echo :menuqwd>>首部.txt  &echo cls>>首部.txt
echo echo.>>首部.txt
cd.>小节.txt

echo.
for /f %%i in ('dir/b *.bat') do if %%i==合并BAT.bat (echo 跳过本文件 ) else (if %%i==合并结果.bat (echo 跳过生成文件! ) else (
set/a a+=1

call echo echo     %%a%%.   %%i>>首部.txt
call echo :%%a%%>>小节.txt
type %%i>>小节.txt
echo.>>小节.txt
echo.>>小节.txt
echo echo ----------------------------------- >>小节.txt

echo echo 1.回到主目录   2.退出   3.重新运行>>小节.txt

echo :gowhere>>小节.txt
echo set/p gowhere=请选择!>>小节.txt
echo if %%gowhere%%==1  goto menuqwd>>小节.txt
echo if %%gowhere%%==2  goto endqwd>>小节.txt
echo if %%gowhere%%==3  cls ^&goto %%menuqwd%%>>小节.txt
echo goto gowhere>>小节.txt
echo echo ----------------------------------- >>小节.txt
))
echo.
echo 录入文件数: %a% 个

echo echo ----------------------------------- >>首部.txt
echo set/p menuqwd=请选择!>>首部.txt
echo if %%menuqwd%%==%%menuqwd%% goto %%menuqwd%% >>首部.txt
echo goto menuqwd>>首部.txt

type 首部.txt>合并结果.bat
type 小节.txt>>合并结果.bat
echo :endqwd>> 合并结果.bat
echo cls >>合并结果.bat
echo.>>合并结果.bat &echo.>>合并结果.bat &echo.>>合并结果.bat
echo echo -------^^-^^  再见! ^^-^^ ---------->>合并结果.bat
echo pause^>nul >>合并结果.bat
echo.&echo.
echo 删除临时文件!并打开生成的  合并结果.bat 文件
pause>nul
del 首部.txt 小节.txt
cls
合并结果.bat
pause>nul[/code]

popo_hym 发表于 2008-8-11 17:34

我试了一下(对bat文件测试),可以运行。

但这种情况下 这个批处理不能保存为“.bat”形式,只能保存为“.cmd”

不然它会把自己也加入要合并的文件中

林路 发表于 2008-9-6 01:04

顶!

同意上面说的  觉得这个不错  挺实用的  我反正用的着  呵呵

navy830411 发表于 2008-9-6 13:30

不错,谢谢,,,,,,,,,

ksyx 发表于 2008-9-23 10:18

[code]if %%i==合并BAT.bat (echo 跳过本文件 )[/code]看这句,所以你把保存下来的文件名改为“合并BAT.bat ”就不会添加自己了

pusofalse 发表于 2008-9-23 10:24

2楼兄弟说的的确是个问题,可以在每段批处理代码前加setlocal,并在其后用相应的endlocal清空变量。

huziivy 发表于 2010-1-26 14:30

好啊  学习了

狱渊 发表于 2014-1-18 17:31

直接 =%0  不行吗?

凡凡之呗 发表于 2015-2-7 15:18

嗯嗯  这个不错,应该能有选择额进入其中某个批处理文件并运行吧

calm 发表于 2015-10-14 14:31

太有用了,谢谢!

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.