当前位置: 代码迷 >> VFP >> 怎么在程序中用命令行实现把文件自动压缩成exe的自解压格式?
  详细解决方案

怎么在程序中用命令行实现把文件自动压缩成exe的自解压格式?

热度:9756   发布时间:2013-02-26 00:00:00.0
如何在程序中用命令行实现把文件自动压缩成exe的自解压格式?急……
我在程序中生成一个dbf表,然后如何利用winrar把这个dbf表自动压缩成exe的自解压文件。
请大家帮忙。
谢谢!

------解决方案--------------------------------------------------------
请参考

VFP中压缩工具WinRAR的调用
-------------------------------------------
压缩:

DELETE FILE bak.jhz
RUN /N7 WinRAR.exe a -ibck -r -k -o+ -y -hp123 -p123 bak.jhz dbf\*.*

RUN /N7 WinRAR.exe a -ibck -r -o+ -y -hp123 -p123 bak.jhz dbf\*.*

解压:

RUN /N7 WinRAR.exe x -ibck -r -k -o+ -y -hp123 -p123 bak.jhz dbf\*.*

RUN /N7 WinRAR.exe x -ibck -r -o+ -y -hp123 -p123 bak.jhz dbf\*.*


参数说明:
a:添加到档案文件中
x:从档案文件中全路径释放文件

-ibck:后台运行WinRAR
-r:连同子文件夹操作
-k:锁定档案文件
-o+:覆盖已经存在的文件
-y:对所有询问均回应为“是”
-hp123:加密文件数据和文件头,密码为123
-p123:设置密码为123,此密码上一个密码可以不一样

bak.jhz:压缩后的文件名或要解压的文件(.jhz为自定义扩展名)
dbf\*.*:要压缩的文件或要解压到的文件位置

更详细参数请参考:WinRAR中帮助文件


--------------------------------------------------
  在实际应用中,如果Foxpro管理的数据库,表文件较多,占用空间较大,并且其长度又具有不确定性或不定增长性(如:明细帐),这样,一个表的字节数就可能超过一张软盘的容量,而Foxpro的拷贝命令又不能支持自动分卷连续备份,因此,这就给数据库的软盘备份与恢复带来一定的困难。如果能在Foxpro环境下,运用一种压缩算法,编写一个高效实用的压缩工具,那当然是最好的解决方案,遗憾的是笔者作过尝试却未获成功,在此,笔者采取了调用基于DOS的压缩工具软件ARJ.exe,实现了压缩分卷备份和分卷解压缩恢复的功能,现将具体实现方法概述如下,以供探讨。

一、定制ARJ运行环境
  在Foxpro for Windows环境中,提供了运行外部命令或程序的命令:Run。如果Run中指定的程序没有扩展名,Foxpro for Windows首先查找指定名称的程序信息文件(后缀为PIF)。PIF允许在Windows下运行非Windows程序,并且可以指定其运行参数:程序是在窗口中运行还是全屏幕运行以及内存分配等。如果找到了相应的PIF,则使用其中指定的参数运行PIF中的程序;当找不到PIF时,就使用安装在Foxpro for Windows目录中的PIF文件FOXRUN.PIF。FOXRUN.PIF对程序在Windows中运行做了一些设置。因此,我们可以依据该文件,定制自己的PIF文件,不妨命名为:Arj_backup.pif。假设工作目录为:C:\VfFP50\DATA,备分批处理文件为:d_backup.bat,恢复批处理文件为:d_restore.bat ,ARJ.EXE也已拷贝至该目录下。
  ● copy file c:\vfp50\foxrun.pif to arj_backup.pif
  ● modi file d_backup.bat (使其包含以下语句)
   cd c:\v fp50\data
   arjva -va -a -y bak_data
   exit(退出批处理操作)
  ●modi file d_restore.bat (使其包含以下语句)
   cd c:\vfp50\data
   arj x -va -a -y bak_data
   exit
  ARJ参数说明:
  -va:使用A驱软盘上所有自由空间执行压缩任务。可以将a改为1440或1200,则以1.44M或1.22M大小分割备份文件。
  -a:对所有属性的文件都能进行处理,包括隐含文件。
  -y:对所有程序提问,都默认按肯定回答,直接执行。
  -x:解压释放压缩文件。
  Arj_backup.PIF 配置方法说明:
  修改PIF配置的进入方法有两种,一种方法是:当激活Arj_backup,出现运行窗口时,用鼠标右键单击窗口或屏幕底部对应任务栏,选择属性按钮,进入配置页面。另一种方法是:用“资源管理器”找到对应的PIF文件,单击鼠标右键,选择属性按钮,进入配置页面进行设置。由于配置内容较多,在此不能一一详述,仅就运行本程序可能涉及的几项参数做一介绍。
  ● 程序:
  1.第一行为运行窗口标示,可设定为:正在进行数据文件压缩……
  2.命令行:Command.com(DOS命令处理程序,不需改动)
  3.工作目录:C:\vfp50\data(备份目录)
  4.批处理文件:D_backup.bat
  5.快捷键:
  6.运行:小窗口
  7.高级属性设置:选定“建议使用MS—DOS方式”复选框,此项配置的功能是:在运行此程序时,Windows检测该程序是否要在MS-DOS方式下运行。如果是这样,Windows将运行向导程序来安装自定义图标以便运行此程序。否则,如果程序需要在MS-DOS方式下运行,但是未复选此项,该程序可能无法正常运行。
  8.更改图标:可以为此运行窗口任意选定图标。
  9.选定“退出时关闭”复选框,此项配置的功能是:指定程序执行完后是否关团MS-DOS窗口。如果未复选 此框,MS-DOS窗口将保持打开状态。
  ● 屏幕:
  窗口:选定“在启动时恢复设置”复选框,此项配置的功能是:退出此程序时保存窗口设置,包括窗口的大小、位置和字体。否则,运行窗口不能被任意托放,影响整体界面布局。
  ● 杂项:
  鼠标:“独占方式”复选框,此项配置的功能是:单击此处可以使该程序独占鼠标。在该程序运行期间,鼠标指针被隐藏,鼠标功能失效,退出后,鼠标功能自动恢复正常。
  与此类似,Arj_restore.PIF的配置方法亦可如法炮制,只需将“程序”中的“批处理文件”改为:D_restore.bat即可。
  PIF运行窗口的位置、大小,可以手工托放、调整,如果想隐藏该窗口,可以将它缩至最小,再拖至屏幕右下角。
  上述配置设定完成以后,按“确定”按钮退出配置页面。此时,ARJ运行环境定制完成。

二、Foxpro程序调用
  1.提供软盘备份、硬盘备份(备份到硬盘C:\backup目录下)两种方式。
  2.软盘备份前,先在硬盘调用ARJ压缩分卷,并创建一个文本文件(date_backup)用于记录备份时间、备份文件数量、所需软盘数量,以便用户据此判断是否压缩成功并进行软盘备份;恢复时,也首先打开软盘上的该文本,显示备份时间、备份文件数量、所需软盘数量,由用户据此确定是否进行软盘恢复。备份或恢复时,如果中途某张盘出现故障,或顺序错误,均允许“重试?”。
  3.软盘恢复时,检查每张盘的备份时间是否与上张盘一致,并检查其装入顺序是否正确。确保备份数据的时效性、完整性。
  4.软盘恢复时,先在非工作目录下进行,全部工作完成并确认无误后,再移入工作目录,这样,可以避免数据库的不完全覆盖而造成的损坏。
  5.出错时激活故障处理例程err_proc,置出错标志,退出处理。

------解决方案--------------------------------------------------------
命令S为自释放格式如:

RUN /N7 WinRAR.exe S -ibck -r -k -o+ -y bak.EXE dbf\*.*

  相关解决方案