(之前的版本有一个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: 好久没用过批处理了,要是有问题的话欢迎指正,谢谢!
参考: