最近写一个bat脚本:查找哪一次更改把程序给搞崩溃(Crash)了。本人用的是perforce版本管理,找这个crash在debugger下实在难找,就只能这样了。
面对一堆changelists,采用折半查找吧。首先我要用到时xcopy这个命令:把编译好的exe目录文件拷贝到相应的目录下面: 比如编译好的exe目录是F:\\Build\\exe目录,
而我要拷贝到的目录是:E:\\changelist1目录。本来以为直接写:xcopy F:\\Build\\exe\\ E:\\changelist1\\就行了,后来居然出现:invalid path的提示(:,后来检查我的路径什么的,都对阿,看来神奇了,最后就才发现最后目录不要"\\"符号,我晕,终于拷贝了,但发现,目录里下的子目录没有拷贝,google下,才知道需要加一些指定符,最后才成功:xcopy F:\\Build\\exe E:\\changelist1 /D /S /Y 。接下来要实现sync to changelist and build,perforce有非常好的接口(commands), 直接调用就好了。
大家对bat中的pushd %1 和popd %1, 估计不是太熟悉,哥们也是找了许久,才知道。%1 就是你的命令行上的第一个参数,比如我的命令行的第一个参数是F:\Build\exe 。而pushd %1 就是告诉电脑进入第一个参数的目录里,相当于cd F:\Build\exe 。然后在此目录下再做一些其他你想要的操作。
终于把bat写出来了,名曰:sync_to_changelist_build.bat ,稍微试了一下,可以用了。就在我高兴的时候,巨大的尴尬从天而降:
本人向跑完bat后,就再执行copy操作:
sync_to_changelist_build.bat F:\\Build\\exe 15688
xcopy F:\\Build\\exe E:\\changelist1 /D /S /Y
哥们写完,就让电脑自己跑去吧,就等明天看结果。
这不明天看的时候,根本就没有xcopy的动作,太难受了。
后来查资料,问牛人,才知道:我丢了一个关键字call,call sync_to_changelist_build.bat F:\\Build\\exe 15688
改后是:
call sync_to_changelist_build.bat F:\\Build\\exe 15688
xcopy F:\\Build\\exe E:\\changelist1 /D /S /Y