在VB中如何调用压缩工具winrar

原创 2007年09月12日 20:21:00
本人用VB写了一个自动备份工具,现在想在备份之后自动调用winrar进行压缩,即在目标文件夹看到的是压缩过的文件.本人不知如何调用winrar,向大家请教如何才能实现.最好有VB语句.谢谢!!!

答案1
给Access数据库压缩

给你一段别人写的sub做参考,压缩采用dao方法

Option Explicit

' 压缩 Access 数据库
Public Sub CompactJetDatabase(SourceFile As String, Optional Password As String, Optional BackupOriginal As Boolean = True)
On Error GoTo CompactErr

Dim strBackupFile As String
Dim strTempFile As String

' 判断来源文件是否存在
If Dir(SourceFile) <> "" Then
' 如果需要备份原文件
If BackupOriginal = True Then
strBackupFile = GetSourceFilePath(SourceFile) & "Backup.mdb"
If Dir(strBackupFile) <> "" Then
Kill strBackupFile
End If

FileCopy SourceFile, strBackupFile
End If

' 建立压缩文件名
strTempFile = GetSourceFilePath(SourceFile) & "Temp.mdb"
If Dir(strTempFile) <> "" Then
Kill strTempFile
End If

' 通过 DBEngine 压缩文件,注意,您必须引用 Microsoft DAO 3.xx Object Library
DBEngine.CompactDatabase SourceFile, strTempFile, , , ";Pwd=" & Password & ";"
' 删除旧文件
Kill SourceFile

' 重新命名新文件名
Name strTempFile As SourceFile
Else
MsgBox SourceFile & " 文件找不到!", vbExclamation
End If

CompactErr:
If Err.Number <> 0 Then
MsgBox "压缩数据库发生错误:" & vbCrLf & Err.Description & Err.Number, vbCritical, "错误"
End If

On Error GoTo 0
Exit Sub
End Sub


答案2
一、Shell函数
  Shell函数是VB中的内部函数,它负责执行一个可执行文件,返回一个Variant(Double),如果成功的话,代表这个程序的进程ID,若不成功,则会返回0。

  Shell的语法:Shell(PathName[,WindowStyle])。

  PathName 为必需参数。类型为String,它指出了要执行的程序名,以及任何需要的参数或命令行变量,也可以包括路径名。

  WindowStyle为可选参数。Integer类型,指定在程序运行时窗口的样式。WindowStyle有以下这些值。

  常量 值 描述
  VbHide 0 窗口被隐藏,且焦点会移到隐式窗口。
  VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。
  VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示(缺省值)。
  VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。
  VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。
  VbMinimizedNoFocus 6 窗口会以一个图标来显示,而当前活动的窗口仍然保持活动。

  二、关于WinRar的用法
  主要介绍以下如何在WinRar中用命令行来压缩和解压缩文件。

  压缩:WINRAR A [-switches] [Files] [@File lists]

  例如你想把try.mdb压缩到C盘下,可以WINRAR A C:try.rar C:try.mdb

  解压缩:如果带目录解压缩

     WINRAR X [-switches] [Files] [@File lists] [destionation folder]

     如果在当前目录解压缩,即解压缩时不写目录名

     WINRAR E [-switches] [Files] [@File lists] [destionation folder]

  例如你想把try.rar解压缩到C盘下,可以WINRAR X C:try.rar C:try.mdb

  三、一个例子
  在VB中新建一个工程,在Form1中添加两个按钮Command1、Command2和Command3,把他们的Caption属性分别设为"压缩文件"、"解压缩文件"和"传递文件"。按Command1时把文件try.mdb压缩成try.rar。
Private Sub Command1_Click()

  Dim Rarexe As String ‘WINRAR执行文件的位置

  Dim Source As String ‘ 压缩前的原始文件

  Dim Target As String ‘ 压缩后的目标文件

  Dim FileString as String ‘Shell指令中的字符串

  Dim Result As Long

   Rarexe="C:program fileswinrarwinrar"

  Source="C:try.mdb"

  Target="C:try.rar"

  FileString = rarexe & " a " & Target & " " & Source

  Result = Shell(FileString, vbHide)

  End Sub

  解压的过程类似,按Command2可以把try.rar解压生成 try.mdb。在执行了上面的压缩过程后,可以删除文件try.mdb,来解压缩重新生成try.mdb。

  Private Sub Command2_Click()

  Dim Rarexe As String ‘WINRAR执行文件的位置

  Dim Source As String ‘ 解压缩前的原始文件

  Dim Target As String ‘ 解压缩后的目标文件

  Dim FileString as String ‘Shell指令中的字符串

  Dim Result As Long

   Rarexe="C:program fileswinrarwinrar"

  Source="C:try.rar"

  Target="C:try.mdb"

  FileString = rarexe & " X " & Source & " " & Target

  Result = Shell(FileString, vbHide)

  End Sub

  文件从一台计算机传输到另一台计算机前,应知道另一台计算机的名字,然后用FileCopy语句就可以了。假设要把压缩后try.rar传递到计算机名为"other"的共享目录"want"下。

  Private Sub Command3_Click()

  Dim SourceFile, DestinationFile

   SourceFile ="C:try.rar " ‘ 指定源文件名。

   DestinationFile = "otherwanttry.rar" ‘ 指定目的文件名。

   FileCopy SourceFile, DestinationFile ‘ 将源文件的内容复制到目的文件中。

  End Sub

参考 http://www.enet.com.cn/article/2004/0319/A20040319295919.shtml


答案3
非常感谢上面的两位!!!
现在备份的文件不止一个,而且不断有新文件生成,如果自动备份filecopy函数不修改文件的创建和修改时间,压缩后的文件创建时间和修改时间与以前不一样了,如何才能将已经备份压缩过的文件不在进行备份压缩呢?

答案4
//现在备份的文件不止一个,而且不断有新文件生成,如果自动备份filecopy函数不修改文件的创建和修改时间,压缩后的文件创建时间和修改时间与以前不一样了,如何才能将已经备份压缩过的文件不在进行备份压缩呢?

用GetFileTime函数获得文件时间(必要的话SetFileTime修改文件时间):

GetFileTime
【VB声明】
Private Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long

【说明】
取得指定文件的时间信息

【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError

【备注】
如果不需要特定的信息,那么lpCreationTime,lpLastAccessTime,lpLastWriteTime都可以设置为零(用ByVal
As Long)。这个函数返回的文件时间采用UTC格式

【参数表】
hFile ---------- Long,文件的句柄

lpCreationTime - FILETIME,用于装载文件的创建时间

lpLastAccessTime - FILETIME,用于装载文件上一次访问的时间(FAT文件系统不支持这一特性)

lpLastWriteTime - FILETIME,用于装载文件上一次修改的时间

SetFileTime:
【VB声明】
Private Declare Function SetFileTime Lib "kernel32" Alias "SetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long

【说明】
设置文件的创建、访问及上次修改时间

【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError

【参数表】
hFile ---------- Long,系统文件句柄

lpCreationTime - FILETIME,文件的创建时间

lpLastAccessTime - FILETIME,文件上一次访问的时间

lpLastWriteTime - FILETIME,文件最近一次修改的时间



答案5
非常感谢rainstormmaster(暴风雨 v2.0)!希望能请教到更多高手!!!

答案6
进来学习一下!!!

答案7
http://blog.csdn.net/northwolves/archive/2005/09/25/489106.aspx

答案8
各位高手:能否将压缩后的文件的创建时间和修改时间设置为源文件的创建时间和修改时间,这样自动备份时,已经备份过的文件就不用再备份了,只需备份新生成的文件,vb中的filecopy就好用了!恭请你们的指点!!!

答案9
路过学习

答案10
感谢各位!!! 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

源于 WinRAR 的 Linux RAR 解压缩工具

源于 WinRAR 的 Linux RAR 解压缩工具 WinRAR 是 Windows 下用户得最多的压缩工具之一,网络上不少资料也是 .rar 压缩包。但是大部分 Linux ...

winrar压缩工具

  • 2014-08-16 20:17
  • 3.38MB
  • 下载

winrar解压缩工具

  • 2014-02-25 09:17
  • 1.47MB
  • 下载

WinRar对VB.NET文件压缩技巧归纳总结

VB.NET文件压缩往往成为我们的问题,在这里我给大家推荐一下用Winrar进行文件压缩被,因为一些数据库文件(如Access文件)在远程传输过程中可能由于文件比较大而影响传递效果。如果进行压缩以后再...

winrar压缩工具

  • 2013-01-27 05:21
  • 1.41MB
  • 下载

压缩工具WinRAR

  • 2011-12-09 09:40
  • 1.27MB
  • 下载

Android图片压缩工具类

网上用了很多压缩图片的方法都不是很理想,这个工具类比较靠谱可以将5,6M的图片压缩到60到70K import java.io.File; import java.io.FileNotFound...

WinRAR压缩工具

  • 2014-03-06 20:48
  • 1.05MB
  • 下载

winrar压缩工具

  • 2013-04-14 16:32
  • 1.67MB
  • 下载

图片上传服务器压缩工具类

这个是我整理调试的图片上传工具类;只需要图片路径方可;大家可以直接使用;希望可以帮助到大家;代码如下;
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)