I can believe fly.

Tuesday, May 18, 2010

bat简易解决你的需求

bat简易解决你的需求

最近写了两个bat,觉得挺受用的,再次感觉bat的强大
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
GetData.bat 本地工作目录 文件列表
用途: 根据文件列表copy共享数据到本地
正文:

@echo on

set workdir=%1
set listfile=%2
@set user=ysl
@set pwd=ysl123
FOR /F "tokens=1,2* delims=," %%i in (%listfile%) do (
if "%%i"=="" goto exit
if "%%j"=="" goto exit
@echo %%i %%j
@if not exist "%workdir%\%%j\." mkdir %workdir%\%%j
@net use %%i /d /y
@net use %%i /user:%user% %pwd%
@xcopy /Y/E %%i\*.* %workdir%\%%j)
:exit

经典说明:
1. 该篇的经典之处在于FOR /F的用法,此文中用到FOR的意思是
从文件%listfile%中读取每行数据,并以逗号作为分隔符将获取的数据传给变量%%i,%%j,
假如名中的%%i 你用%%a,那后就可以按顺序%%a,%%b,%%c捕捉到对应的值
另外,记住此处变量获取值使用的是两个百分号%%在前面。
关于for的使用详细可参考 hi.baidu.com/cjiabing/blog/item/76bc51b5fe79bec937d3ca46.html

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

GetLog.bat 日志文件
用途: 从日志文件里获取相关的错误数据
正文:

set logfile=%1
@echo ----------------error count-----------
@type %logfile% | find "error(s),"
@findstr /i "solution_file 个错误 已用时间" "%logfile%"
@echo ----------------error info-----------
@type %logfile% | find ": error "
@echo ----------------make setup info-----------
@type %logfile% | find "Error in script"

@echo ----------------get log end-----------


说明:
该篇的经典在于findstr的用法,@findstr /i "solution_file 个错误 已用时间" "%logfile%"
其含义指的是从%logfile%文件中读取每行数据中含有solution_file 个错误 已用时间任一个字符串的数据的信息
如:
[echo] solution_file=E:\tools\Src\MergeLib\MergeLib.vcproj
[exec] 0 个错误
[exec] 已用时间 00:00:02.91

ps; 查找多字符串的信息,碰到中文则放后面且加有引号
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

Thursday, May 6, 2010

关于NANT集成获取cc.net,hudson的构建号

关于NANT集成获取cc.net,hudson的构建号

1. nant获取cc.net的构建号
<if test="${property::exists('CCNetLabel')}">
<property name="build_ver" value="${CCNetLabel}"/>
</if>

2. nant获取hudson的构建号
<if test="${environment::variable-exists('BUILD_NUMBER')}">
<property name="build_ver" value="${environment::get-variable('BUILD_NUMBER')}"/>
</if>
备注:其中environment::variable-exists用于检查环境变量是否存在;
environment::get-variable用于获取环境变量值,此两个函数需要基于NANT的0.91.3774.0版本上方可使用