我用VB执行了如下cmd命令
——————————————————————————————
Shell "cmd /c" & "@XCOPY Mysoft\Site 备份\Mysoft\Site /E /Y"
Shell "cmd /c" & "@XCOPY Mysoft\Site 备份\Mysoft\Site1 /E /Y"
Shell "cmd /c" & "@COPY Mysoft\Site\index.htm 备份\Mysoft\index.htm"
Shell "cmd /c" & "@COPY Mysoft\Site\index.htm 备份\Mysoft\index.html"
——————————————————————————————
我想判断这些命令是否执行功能,该怎么判断?
如果某一项出错了。就弹出msgbox显示哪个步骤错误了。
如果这样不行,该换成怎样写代码才行?
复制文件和文件夹,然后判断是否成功
MsgBox Copy("c:\boot.ini", "d:\123.ini") '返回true则成功
Function Copy(FilePathA As String, FilePathB As String) As Boolean
Dim Msg As Integer
Msg = vbYes
If Dir(FilePathA, 7) <> "" Then '如果输入的路径是一个存在的文件
If Dir(FilePathB, 7) <> "" Then Msg = MsgBox("文件" & FilePathB & "已经存在,是否替换文件?", vbYesNo, "文件已存在") '如果存在目标文件,添加存在询问语句,如果不需要就删掉
If Msg = vbYes Then '如果选了替换和不存在FilePathB文件
If Dir(FilePathB, 7) <> "" Then Kill FilePathB '如果存在FilePathB,就删除FilePathB文件
If Dir(FilePathB, 7) <> "" Then '如果还存在FilePathB文件(那么表示删除失败,文件被其他程序占用,覆盖也肯定失败)
MsgBox FilePathB & "文件正被使用,无法替换文件", 16, "复制失败" '弹出复制文件失败消息,如果不要可以删除
Else
FileCopy FilePathA, FilePathB '如果一切正常,就复制文件到目标
If Dir(FilePathB, 7) <> "" Then Copy = True '如果存在目标文件了,就说明复制成功,返回布尔值true
End If
End If
End If
End Function
先给你文件复制的,今天太晚了,我要睡了,我明天还有事,这个东西我明天补齐,现在只能复制文件
MsgBox Copy("c:\boot.ini", "d:\123.ini") '返回true则成功
Function Copy(FilePathA As String, FilePathB As String) As Boolean
Dim Msg As Integer
Msg = vbYes
If Dir(FilePathA, 7) <> "" Then '如果输入的路径是一个存在的文件
If Dir(FilePathB, 7) <> "" Then Msg = MsgBox("文件" & FilePathB & "已经存在,是否替换文件?", vbYesNo, "文件已存在") '如果存在目标文件,添加存在询问语句,如果不需要就删掉
If Msg = vbYes Then '如果选了替换和不存在FilePathB文件
If Dir(FilePathB, 7) <> "" Then Kill FilePathB '如果存在FilePathB,就删除FilePathB文件
If Dir(FilePathB, 7) <> "" Then '如果还存在FilePathB文件(那么表示删除失败,文件被其他程序占用,覆盖也肯定失败)
MsgBox FilePathB & "文件正被使用,无法替换文件", 16, "复制失败" '弹出复制文件失败消息,如果不要可以删除
Else
FileCopy FilePathA, FilePathB '如果一切正常,就复制文件到目标
If Dir(FilePathB, 7) <> "" Then Copy = True '如果存在目标文件了,就说明复制成功,返回布尔值true
End If
End If
End If
End Function
先给你文件复制的,今天太晚了,我要睡了,我明天还有事,这个东西我明天补齐,现在只能复制文件
温馨提示:答案为网友推荐,仅供参考
第1个回答 2008-11-10
shell函数不行,因为它和VB不同步,即shell函数未执行完毕,VB就执行下一句了
用WScript.Shell控件的Run方法,第三个参数为True时同步执行,代码如下
'定义子过程
Sub Panduan(command)
tempfile = App.Path & "\判断.tmp"
On Error Resume Next
Kill tempfile
On Error GoTo 0
Set wsh = CreateObject("WScript.Shell")
wsh.Run "cmd /c " & command & " && cd.>""" & tempfile & """", , True
If Dir(tempfile) <> "" Then
MsgBox command & " 执行成功", 64
Else
MsgBox command & " 执行失败", 16
End If
On Error Resume Next
Kill tempfile
End Sub
'以下在其它过程中调用
panduan "@XCOPY Mysoft\Site 备份\Mysoft\Site /E /Y"
panduan "@XCOPY Mysoft\Site 备份\Mysoft\Site1 /E /Y"
panduan "@COPY Mysoft\Site\index.htm 备份\Mysoft\index.htm"
panduan "@COPY Mysoft\Site\index.htm 备份\Mysoft\index.html"
用WScript.Shell控件的Run方法,第三个参数为True时同步执行,代码如下
'定义子过程
Sub Panduan(command)
tempfile = App.Path & "\判断.tmp"
On Error Resume Next
Kill tempfile
On Error GoTo 0
Set wsh = CreateObject("WScript.Shell")
wsh.Run "cmd /c " & command & " && cd.>""" & tempfile & """", , True
If Dir(tempfile) <> "" Then
MsgBox command & " 执行成功", 64
Else
MsgBox command & " 执行失败", 16
End If
On Error Resume Next
Kill tempfile
End Sub
'以下在其它过程中调用
panduan "@XCOPY Mysoft\Site 备份\Mysoft\Site /E /Y"
panduan "@XCOPY Mysoft\Site 备份\Mysoft\Site1 /E /Y"
panduan "@COPY Mysoft\Site\index.htm 备份\Mysoft\index.htm"
panduan "@COPY Mysoft\Site\index.htm 备份\Mysoft\index.html"
第2个回答 2008-11-08
on error goto ...
第3个回答 2008-11-08
Shell函数
执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。
语法:
Shell(pathname[,windowstyle])
Shell 函数的语法含有下面这些命名参数:
部分 描述
pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。
Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。
windowstyle 命名参数有以下这些值:
常量 值 描述
vbHide 0 窗口被隐藏,且焦点会移到隐式窗口。
VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。
VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。
VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。
VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。
VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。
说明
如果 Shell 函数成功地执行了所要执行的文件,则它会返回程序的任务 ID。任务 ID 是一个唯一的数值,用来指明正在运行的程序。如果 Shell 函数不能打开命名的程序,则会产生错误。
注意 缺省情况下,Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句。
执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。
语法:
Shell(pathname[,windowstyle])
Shell 函数的语法含有下面这些命名参数:
部分 描述
pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。
Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。
windowstyle 命名参数有以下这些值:
常量 值 描述
vbHide 0 窗口被隐藏,且焦点会移到隐式窗口。
VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。
VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。
VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。
VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。
VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。
说明
如果 Shell 函数成功地执行了所要执行的文件,则它会返回程序的任务 ID。任务 ID 是一个唯一的数值,用来指明正在运行的程序。如果 Shell 函数不能打开命名的程序,则会产生错误。
注意 缺省情况下,Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句。