在vb中如何把一个文件从一个磁盘复制到另一个磁盘

时间:2021-05-14 21:02:07
我在编程中遇到一个这样的问题:我把自己的程序做成安装程序后,当把程序安装到
计算机上并运行程序,程序能把安装下的某一文件复制到系统盘下,如 e:\vsflex.ocx
复制到c:\winet\system32\
另:如何能得到用户的安装目录 和 系统目录(因为有些用户可能将系统装到d:)
望各位大虾指教。谢谢。

6 个解决方案

#1


dim AppPath as string, SysPath as string
AppPath=App.Path
if Right(AppPath,1)<>"\" then AppPath=AppPath & "\"

#2


FileCopy 语句
      

复制一个文件。

语法

FileCopy source, destination

FileCopy 语句的语法含有以下这些命名参数:

部分 描述 
source 必要参数。字符串表达式,用来表示要被复制的文件名。source 可以包含目录或文件夹、以及驱动器。 
destination 必要参数。字符串表达式,用来指定要复制的目地文件名。destination 可以包含目录或文件夹、以及驱动器。 


说明

如果想要对一个已打开的文件使用 FileCopy 语句,则会产生错误。

#3


还有一种简单的方法:
执行DOS命令
shell("command.com /c copy c:\123.txt d:\123.txt")

#4


你用什么做的安装程序,这个问题应该是在做安装程序时由制作安装程序的软件完成的,而不是我们在用VB编程时需要考虑的问题。当然如果你用VB现编安装程序除外。

#5


在VB里用这两个函数。


GetWindowsDirectory 

VB声明 
Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long 
说明 
这个函数能获取Windows目录的完整路径名。在这个目录里,保存了大多数windows应用程序文件及初始化文件 
返回值 
Long,复制到lpBuffer的一个字串的长度。如lpBuffer不够大,不能容下整个字串,就会返回lpBuffer要求的长度。零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
lpBuffer String,指定一个字串缓冲区,用于装载Windows目录名。除非是根目录,否则目录中不会有一个中止用的“\”字符 
nSize Long,lpBuffer字串的最大长度 



GetSystemDirectory 

VB声明 
Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long 
说明 
这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作 
返回值 
Long,装载到lpBuffer缓冲区的字符数量。如lpBuffer不够大,不能容下文件名,则返回要求的缓冲区长度 
参数表 
参数 类型及说明 
lpBuffer String,用于装载系统目录路径名的一个字串缓冲区。它应事先初始化成nSize+1个字符的长度。通常至少要为这个缓冲区分配MAX_PATH个字符的长度 
nSize Long,lpBuffer字串的最大长度 

#6


Dim myfold As New FileSystemObject
myfold.copyfile SrcFile, DestFile

#1


dim AppPath as string, SysPath as string
AppPath=App.Path
if Right(AppPath,1)<>"\" then AppPath=AppPath & "\"

#2


FileCopy 语句
      

复制一个文件。

语法

FileCopy source, destination

FileCopy 语句的语法含有以下这些命名参数:

部分 描述 
source 必要参数。字符串表达式,用来表示要被复制的文件名。source 可以包含目录或文件夹、以及驱动器。 
destination 必要参数。字符串表达式,用来指定要复制的目地文件名。destination 可以包含目录或文件夹、以及驱动器。 


说明

如果想要对一个已打开的文件使用 FileCopy 语句,则会产生错误。

#3


还有一种简单的方法:
执行DOS命令
shell("command.com /c copy c:\123.txt d:\123.txt")

#4


你用什么做的安装程序,这个问题应该是在做安装程序时由制作安装程序的软件完成的,而不是我们在用VB编程时需要考虑的问题。当然如果你用VB现编安装程序除外。

#5


在VB里用这两个函数。


GetWindowsDirectory 

VB声明 
Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long 
说明 
这个函数能获取Windows目录的完整路径名。在这个目录里,保存了大多数windows应用程序文件及初始化文件 
返回值 
Long,复制到lpBuffer的一个字串的长度。如lpBuffer不够大,不能容下整个字串,就会返回lpBuffer要求的长度。零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
lpBuffer String,指定一个字串缓冲区,用于装载Windows目录名。除非是根目录,否则目录中不会有一个中止用的“\”字符 
nSize Long,lpBuffer字串的最大长度 



GetSystemDirectory 

VB声明 
Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long 
说明 
这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作 
返回值 
Long,装载到lpBuffer缓冲区的字符数量。如lpBuffer不够大,不能容下文件名,则返回要求的缓冲区长度 
参数表 
参数 类型及说明 
lpBuffer String,用于装载系统目录路径名的一个字串缓冲区。它应事先初始化成nSize+1个字符的长度。通常至少要为这个缓冲区分配MAX_PATH个字符的长度 
nSize Long,lpBuffer字串的最大长度 

#6


Dim myfold As New FileSystemObject
myfold.copyfile SrcFile, DestFile