使用批处理将特定字符串之间的内容删掉,配合TopCoder中ExampleBuilder插件使用

(之前的版本有一个bug,就是处理含有中文注释代码的时候会出问题,原因是之前版本的sed工具对中文处理有问题,使用另外一个版的sed就没有问题了,现在bug已修复!)

之前装了一个TopCoder的插件:ExampleBuilder,具体可以看这篇博客。这个插件会自动生成测试代码,但是提交的时候要手动删除多余的测试代码,感觉特别麻烦,于是就写了一个批处理文件,可以自动将多余的代码删除,删除后的代码就可以直接提交。因为用到了linux下的sed命令,所以要下载一个windows版本的sed工具,下载地址如下:

http://unxutils.sourceforge.net/UnxUpdates.zip

(上面地址失效的话到这里下:http://download.csdn.net/detail/xuzhezhaozhao/5738615

下载之后解压就可以用了,将下面path中的路径替换成你解压的的路径,要不然我的这个批处理文件会找不到sed命令。将下面的内容保存为 format.bat文件,将format.bat 文件与你的cpp文件放在同一路径下,双击format.bat文件,你的cpp文件就被转换成了可以直接提交的格式内容了。


使用之前请先看一看.bat文件中我给我注释,这些注释可以帮助你自定义你所需要的功能,比较你要转换的是java文件或者你使用的分隔符不是默认分隔符等等。


另外请注意

1. 需要格式化的文件请与该.bat文件放在同一文件夹下

2. 文件名请不要含有空格

3. 格式化之后会产生一个.bak的备份文件,该文件为格式化之前的文件。

                           

format.bat内容如下:

@echo off

rem 下面是将sed.exe所在路径加到系统环境变量中去,将这个改为你安装sed的对应路径

rem 请改成你解压的路径,后面的 :path不要改
set path=D:\UnxUpdates;:path

rem 下面两个变量是在插件中设置的分隔字符串,默认是下面的字符串
rem 修改成你自定义的分隔符,这是默认情况
set begin=BEGIN CUT HERE
set end=END CUT HERE

rem 下面的命令会把该目录下所以的cpp文件都转换成可以submit的格式
for /f "tokens=*" %%i in ('dir /b *.cpp') do (

rem 备份原文件
type %%i > %%i.bak

rem 下面是删除两个分隔符之间的所有行,包括分隔符所在的行
sed.exe -i "/%begin%/, /%end%/d" %%i
)



PS: 好久没用过批处理了,要是有问题的话欢迎指正,谢谢!


参考:

http://www.bathome.net/thread-13353-1-1.html

http://bbs.chinaunix.net/thread-4075459-1-1.html

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值