walnutcy

批处理 自动遍历当前目录

0
阅读(36307)

由于需要编译并更新多个工程,200多个,

工程都是类似的,自然想偷下懒,用批处理多好,

在以前对批处理理解的基础上,详细查了一下FOR 的命令说明:

FOR %variable IN (set) DO command [command-parameters]

  %variable  指定一个单一字母可替换的参数。
  (set)      指定一个或一组文件。可以使用通配符。
  command    指定对每个文件执行的命令。
  command-parameters
             为特定命令指定参数或命令行开关。

由于是遍历当前目录下所有目录的名字,就使用如下形式的命令:

FOR /D %variable IN (*) DO command [command-parameters]

这样只要通过command来编译单个工程就好了,

具体实现如下:


@FOR /D %%i IN (*) DO @CALL :complier %%i %OutDir%   

@exit

:complier
@set file=%1\Keil
@set KEIL_EXE=D:\Keil\UV3\Uv3.exe

@if exist "%file%\%1.Uv2" (
@%KEIL_EXE% -r "%file%\%1.Uv2" -o "message.txt"
)
@goto :eof

这里实现还包含了另一个知识点: 批处理里调用子程序

CALL  :lable parameter ...

有了这个批处理,我就可以睡大觉了,

系统会自动帮我把200多个工程编译完成的,