公司的系统是使用PB + SQLServer开发的采用Visual Source safe进行版本控制由于项目客户化需求的影响系统经常要进行更新和编译每次的工作流程就是先在负责编译的机器上打开VSS下载需要更新的PBL到本地然后找到源程序所在目录将目录及其所有子文件的只读属性去掉(因为在VSS上Get Last Version时会自动将文件设置成只读PB就无法编译了)接着打开PB开始编译编译完成后由于各个PBL是按模块放在不同的目录中的所以生成的PBD也不在一个文件夹中这时我还需要通过搜索的形式找出所有PBD来复制到发布目录这样的重复性工作干几次就让人烦了最终我考虑通过批处理的形式来减少重复劳动
首先VSS的GetLastVersion现在我是找不到可以批处理的方法的去除只读属性也可以在命令行模式下用Attrib命令来解决对于已生成的PBD复制到同一目录我写了一个批处理文件专门把那些固定模块目录下的PBD复制到发布目录无非是一些Copy命令而已没什么可说的问题的关键就在于要控制PB自动打开程序编译完成后自动进入打开负责复制PBD的批处理文件早些时间由于抽不出空也没用过PB的命令行模式所以一直迟迟没写好这个文件现在经过摸索结合CSDN上一些大侠们的指导终于试验成功现写出其过程供各位斧正
对于命令行编译PB的帮助中是这样描述的
From a command line
When you deploy or build a workspace from a command line PowerBuilder starts completes the build and exits as soon as the operation is completed To retain a log file for the session you can send the contents of the Output window to a file Table shows commandline options for building and deploying targets and workspaces
As with other commandline options you need only use the initial letter or letters of the option name as long as the option is uniquely identified The deploy fullbuild and incrementalbuild options can be used only with the workspace option You need to create projects and specify build and deploy options for the workspace in PowerBuilder before you start a build from the command line Deploy builds the projects in the target in the order listed on the Deploy page of the targets properties dialog box
Example
This example assumes that the location of the PowerBuilder executable file is in your system path It opens the workspace called CDShop builds and deploys the targets in the workspace according to your specifications in the workspace and target properties records the content of the Output window in the file D:/tmp/cdshopout and exits PowerBuilder:
pb /w D:/CDShop/CDShoppbw /d /ou D:/tmp/cdshopout
其实上文说了一堆意思无非就是我们可以在命令行模式下执行PB通过一些参数可以控制PB自己编译指定的工作区然后自动退出这也确实是我需要的功能我马上开始在命令行模式下测试有的机器并不能直接打PBexe来执行这需要设置系统的环境变量将PB所在目录放入Path路径中具体方法就不介绍了或者你直接按PB完整的路径输入也行至于后面的参数/w后面挂指定的工作区名称然后是//deploy或者/fullbuild/incrementalbuild这三个参数的意思分别是执行发布完全编译或增量编译任选其一即可但是需要注意的是这里我们要用/deploy参数为什么呢如果你用的是fullbuild或者是increamentbuild参数PB只会编译而不会生成PBD或者DLL以前自己在PB中进行编译的时候一直以为Deploy就是Build因为在Deploy Project的时候会有一个参数是完全编译或者增量编译所以一直搞不清楚Deploy和Build的区别在网上见其它兄弟也有这样的疑问这次我通过试验发现确实二者是有区别的如果你不用Deploy而直接Build完了复制到用户那里程序还是旧的就不好办了那么我们挂上参数后PB怎么知道是执行哪一个Project的Deploy呢设置如下
在工作区下的子结点是Target右键单击该Target在弹出的菜单中选择Proterties也就是属性并在弹出的属性窗口中选择Deploy页如下图
[] []