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; 查找多字符串的信息,碰到中文则放后面且加有引号
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

No comments: