amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 3746|回复: 21

用批处理来自动生成IAR工程头文件包含目录

[复制链接]
发表于 2012-5-1 16:34:20 | 显示全部楼层 |阅读模式
本帖最后由 renjun_EMbest 于 2012-5-1 16:43 编辑

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::            NOTE                 :::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: 简要说明:本批处理递归查找当前目录下包含H文件的目录,并将路径名写入HeadDirFile.txt文件中
::           路径为相对路径,以批处理所在的目录为起始路径
:: 使用方法:将批处理文件放到需要查找的文件夹根目录下,然后双击批处理文件,运行即可
::               
::               运行开始时,提示界面为:processing....
::               
::               运行结束时,提示界面为:Congratulations! Work is done
::
:: 注意事项:
:: note 1:   如果需要查找其它后缀文件所在的目录,只需要将note 1对应行的*.h修改为对应名字即可
::           example:你需要查找后缀为txt文件所在的目录,只需将*.h改为*.txt就ok啦
::
:: note 2:   本批处理默认输出相对目录名,也可以修改note 2处的代码来输出其它格式的文本
::           example:你需要输出完整路径,则需要将note 2中的%%~pi修改为%%i即可
::
:: note 3:   note2 中的参数如下所示
::
::           %%~I          - 删除任何引号("),扩展 %I
::           %%~fI        - 将 %I 扩展到一个完全合格的路径名
::           %%~dI        - 仅将 %I 扩展到一个驱动器号
::           %%~pI        - 仅将 %I 扩展到一个路径
::           %%~nI        - 仅将 %I 扩展到一个文件名
::           %%~xI        - 仅将 %I 扩展到一个文件扩展名
::           %%~sI        - 扩展的路径只含有短名
::           %%~aI        - 将 %I 扩展到文件的文件属性
::           %%~tI        - 将 %I 扩展到文件的日期/时间
::           %%~zI        - 将 %I 扩展到文件的大小
::           %%~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩展
::                          到找到的第一个完全合格的名称。如果环境变量名
::                          未被定义,或者没有找到文件,此组合键会扩展到
::                          空字符串
::
::           可以组合修饰符来得到多重结果:
::
::           %%~dpI       - 仅将 %I 扩展到一个驱动器号和路径
::           %%~nxI       - 仅将 %I 扩展到一个文件名和扩展名
::           %%~fsI       - 仅将 %I 扩展到一个带有短名的完整路径名
::           %%~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展
::                          到找到的第一个驱动器号和路径。
::           %%~ftzaI     - 将 %I 扩展到类似输出线路的 DIR
::
:: Hope you enjoy it , thank you ^_^
::                                                          xuesong 2012-05-01



::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::            Below is code      :::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


@ECHO off
ECHO processing....

ECHO  ============================================================================    > HeadDirFile.txt
ECHO  @brief  list the dir which contains a h file in current root directory                                                                                    >> HeadDirFile.txt
ECHO  @author xuesong                                                                                                                                                      >> HeadDirFile.txt
ECHO  @time  %date%----%time%                                                                                                                                       >> HeadDirFile.txt
ECHO  ============================================================================   >> HeadDirFile.txt

::note 1
FOR /R  %%i IN (*.h) DO (                                                            
::note 2
    IF EXIST %%i (ECHO %%~pi >> tmp)                                                
)

FOR /F "delims=" %%i IN (tmp) DO (
IF NOT DEFINED %%i SET %%i=A & ECHO %%i>>HeadDirFile.txt)

DEL tmp

ECHO Congratulations! Work is done
pause


 楼主| 发表于 2012-5-1 17:12:29 | 显示全部楼层
前言:
      从接触AVR至今,一直使用IAR,IAR的简洁高效,令人印象深刻,其优点很多,在此就不罗嗦啦
      每次新建工程后,需要添加头文件路径时就很纠结,手工添加太麻烦,就想有没有自动生成的工具呢?在网上找了很久,没找到最近在公司实习,发现dir /s /b *.h命令可以递归输出当前目录下所有的H文件路径,于是想能不能利用DOS工具来自动处理呢?趁着51放假3天学习了下批处理,动手写个批处理文件,可以完美解决这个问题啦
     先说说批处理的思路:利用批处理的for /R 语句来遍历目录,发现*.h文件后,则将其相对路径追加到一个文件中,这样遍历完后,便得到一个包含所有H文件所在目录的文件,但是这个目录有重复项,比如A目录下有3个H文件,则会输出3此A目录,所以下一步就是
要去除文件中的重复项,删去重复项后,便得到所需要的目录路径啦
    举个例子来说,这样更清晰些:比如我的电脑上mp3工程代码目录如下所示
E:.
+---APP
|   \---new
|      \---ddd
|          +---dddas
|          \---ddddafffff
+---CMSIS
|  +---CoreSupport
|  \---DeviceSupport
+---CONFIG
+---FATFS
|  \---option
+---FWLIB
|   +---inc
|   \---src
+---GUI
+---IAR
|  +---Debug
|   |  +---Exe
|   |  +---List
|   |  \---Obj
|   \---settings
+---LED
+---LRC
+---MP3
+---OUTPUT
+---SD
\---USART


将批处理文件放在根目录下,可以自动生成包含头文件的目录路径,如下所示,
需要说明的是:生成文件中前面的注释部分是我添加的说明,你可以自己修改为自己喜欢的样式,^_^
============================================================================   
@brief list the dir which contains a h file in current root directory         
@author xuesong                                                               
@time 2012/05/01 周二----17:07:06.65                                                      
============================================================================   
\mp3\APP\
\mp3\APP\new\ddd\dddas\
\mp3\APP\new\ddd\ddddafffff\
\mp3\CMSIS\DeviceSupport\
\mp3\CONFIG\
\mp3\FATFS\
\mp3\FWLIB\inc\
\mp3\LED\
\mp3\MP3\
\mp3\SD\
\mp3\USART\

得到该文件后,怎么得到IAR需要的样式呢?有很多种方法,比如用ultraedit的宏功能,先处理第一个路径,然后重复N此宏就ok啦,也可以用VIM来处理,总之,看个人喜欢了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2012-5-1 18:00:08 | 显示全部楼层
谢谢分享。。。。。。。。
发表于 2012-5-1 18:33:52 | 显示全部楼层
不错的小技巧,楼主是个有心人,支持下~~~
发表于 2012-5-1 19:02:20 | 显示全部楼层
真的很好用,,太感谢了,以后不用一个个添加了
发表于 2012-5-1 19:48:10 | 显示全部楼层
不错的方法,谢谢楼主
发表于 2012-5-1 20:56:14 | 显示全部楼层
 需要添加头文件路径吗? 偶都是建好工程好,再保存一下自动生成的C文件,头文件就自动添加了
 楼主| 发表于 2012-5-1 21:15:41 | 显示全部楼层
rifjft 发表于 2012-5-1 20:56
 需要添加头文件路径吗? 偶都是建好工程好,再保存一下自动生成的C文件,头文件就自动添加了 ...

IAR和KEIL下都是需要手工添加头文件路径的,不过keil下是用文件浏览器来选择,IAR需要手工查找需要的头文件目录,然后手工输路径名
不知道你用的什么开发环境?
发表于 2012-5-1 22:38:30 | 显示全部楼层
多谢楼主,每次都要手工添加,这下方便了!
发表于 2012-5-1 23:57:31 | 显示全部楼层
renjun_EMbest 发表于 2012-5-1 21:15
IAR和KEIL下都是需要手工添加头文件路径的,不过keil下是用文件浏览器来选择,IAR需要手工查找需要的头文 ...

神怪,不懂是那里的问题

  用的是IAR,除了刚刚装好软件第一次使用时添加过头文件后,以后再建的其它新工程都没添加过。都是保存一下自动生成的C文件,头文件就自动添加进来了。

  就算新建的工程文件用不同的头文件,也只是在C文件中改一下头文件的名称,然后保存一下。再看目录,头文件就自动加进来了

 楼主| 发表于 2012-5-2 07:33:26 | 显示全部楼层
rifjft 发表于 2012-5-1 23:57
神怪,不懂是那里的问题

  用的是IAR,除了刚刚装好软件第一次使用时添加过头文件后, ...

”都是保存一下自动生成的C文件,头文件就自动添加进来了“,IAR中C语言可以自动生成???你可以详细说一下过程吗?
我用avr和STM32都是手工添加工程头文件目录的,还没见过自动添加头文件目录的情况。。。。
发表于 2012-5-2 11:43:33 | 显示全部楼层
这个是STM的分栏,用的是STM8
发表于 2012-5-2 13:26:38 | 显示全部楼层
我也在为此而困惑了
楼主挺厉害的
发表于 2012-5-2 13:31:29 | 显示全部楼层
批处理文件文件的格式是什么?如何建立?
发表于 2012-5-2 13:33:51 | 显示全部楼层
是.BAT吗?
发表于 2012-5-2 17:19:48 | 显示全部楼层
好东西啊!顶!
 楼主| 发表于 2012-5-2 22:39:12 | 显示全部楼层
易冰 发表于 2012-5-2 13:31
批处理文件文件的格式是什么?如何建立?

后缀名是bat。将一楼的文本复制到记事本中,然后另存为*.bat即可
tip:复制到记事本后,格式可能会乱,为了好看,你可以将代码整理的漂亮些,不过,不整理也没关系
 楼主| 发表于 2012-5-2 22:40:10 | 显示全部楼层
rifjft 发表于 2012-5-2 11:43
这个是STM的分栏,用的是STM8

哈哈,IAR还可以自动生成代码,受教了^_^
 楼主| 发表于 2012-5-2 22:43:14 | 显示全部楼层
wuguoyan 发表于 2012-5-1 18:33
不错的小技巧,楼主是个有心人,支持下~~~

O(∩_∩)O哈哈~,也是被逼无奈啊,每次都是手工找目录,太麻烦啦。。。。为了以后不麻烦,只好硬着头皮研究DOS批处理代码,这下不用再纠结了
发表于 2012-5-21 10:15:35 | 显示全部楼层
renjun_EMbest 发表于 2012-5-2 22:43
O(∩_∩)O哈哈~,也是被逼无奈啊,每次都是手工找目录,太麻烦啦。。。。为了以后不麻烦,只好硬着头皮研 ...

是的,这个问题,一开始把我逼的很无奈,
一开始都是参考别人的例程学习,这个一直搞不清楚。
不过熟悉了之后,对整个工程也更直观。
也促使自己养成良好的编程习惯。

你的方法也很好。
发表于 2012-5-21 11:21:59 | 显示全部楼层
看看!可以借鉴!!!
发表于 2015-10-28 09:55:19 | 显示全部楼层
工具不错,支持分享
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-5-27 04:57

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表