批处理学习笔记2:处理C文件,去除预处理语句

问题描述:给定一个文件夹,文件夹内有很多文件和子文件夹。现在要找出文件夹下所有的C源码文件,对文件进行处理,去除预处理命令,并在C文件的文件夹下生成新的处理后的源码文件。

之所以有这样的问题,是因为在windows中下载的clang编译器没有配置好,编译时找不到头文件。。。没办法只能暂时先去掉C文件的include命令再进行编译了。

批处理代码如下:

setlocal ENABLEDELAYEDEXPANSION 
@echo off
for /r %1 %%i in (*.c) do (
    set path=%%~dpi
    set file=%%~nxi
    set name=%%~ni
    cd !path!
    for /f "tokens=* delims=" %%j in (!file!) do (
        set row=%%j
        if not "!row:~0,1!"=="#" (
            @echo;!row!>>!name!%2.c
        )
    )
)

将以上代码保存到一个批处理文件processCFile.bat中。

简单说来,这段代码的核心是个双重循环,外层循环递归搜索文件夹,找出C文件。找出后内层循环逐行处理C文件,将不是预处理命令的代码行输出到新的文件中。

这里的%1是要搜索的文件夹,%2是新生成的文件的后缀。条件判断语句内部有一个echo;之所以加了分号,是为了能够输出空字符串(即字符串里只有空字符);否则,!row!为空字符串的话会输出ECHO 处于打开/关闭状态
关于echo输出空格行还有多种方法,具体内容参见echo输出空格行

调用这个批处理文件的代码如下:

call processCFile.bat E:\Pangeneral\Leetcode CLONE

命令执行后,在C文件所在文件夹内生成了新的C文件,新的C文件中不包含预处理命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值