100分相关 如果在VB中执行如 del c:\*.* 的脚本
解决方案 »
- vb向oracle数据库同时插入clob与日期类型的问题
- 自定义纸张
- 今天就需要解答的问题,很急,望各位高手多多指教。
- 怎样用变量根据Text1.Text的内容通过RecordSet.Filter模糊查询出一个表的内容到ListBox里
- 怎样读取粘贴板上的数据(粘贴板上是一幅BMP图片)
- //非常奇特的系统启动现象,进来看看//
- 请问各位老细:VB里有模式对话框和非模式对话框吗?能举个例子吗?
- wise制作安装程序时,拖动安装界面的窗口,原窗口不消失,怎么解决?
- 关于系统的问题,高分! 请帮助
- 请教:如何想窗体发送参数?我指的是窗体,不是应用程序!
- 文件夹加密问题
- 新手上路:问几个基本问题。请大虾们指教!
Dim lFileNum As Long
Dim sTempFile As String
lFileNum = FreeFile
sTempFile = "c:\execmd~.bat"
Open sTempFile For Output As lFileNum
Print #lFileNum, sCommand
Close lFileNum
Shell sTempFile, WindowStyle
End SubPrivate Sub Command1_Click()
ExecuteCmd "@echo 执行Del c:\*.*" & vbCrLf & "pause"
End Sub
-------------------------------------------
如果你用Kill语句会报告错误,因为有的文件是系统属性的
如果你用DOS命令,和你运行CMD结果是一样的,删除到系统属性的文件处停止。
综上所述,不如用Format来的好。
这个方法我知道 但我不想用bat 行吗 就是在VB中直接执行
DeleteDirectory "c:\" '删除所有文件和文件夹。小心使用Public Sub DeleteDirectory(sPath As String)
On Error GoTo ErrHandle
Dim sFileName As String
Dim sDirectory As String
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
sFileName = Dir(sPath, vbHidden Or vbSystem Or vbReadOnly Or vbArchive Or vbDirectory)
While LenB(sFileName)
If GetAttr(sPath & sFileName) And vbDirectory Then
'删除子文件夹
If Left(sFileName, 1) <> "." Then
DeleteDirectory sPath & sFileName
sFileName = Dir(sPath, vbHidden Or vbSystem Or vbReadOnly Or vbArchive Or vbDirectory)
End If
Else
'删除文件
SetAttr sPath & sFileName, vbNormal
Kill sPath & sFileName
End If
sFileName = Dir()
Wend
SetAttr sPath, vbNormal
RmDir sPath
Exit Sub
ErrHandle:
Debug.Print "DeleteDirectory:"; Err.Number; ","; Err.Description
Resume Next
End Sub
用shell通过调用cmd来执行del
-------------------------------------------------------------
具体代码吗 如调用cmd 来执行 del c:\*.txt 解决了 马上给分
Private Const INFINITE = -1&
Private Const SYNCHRONIZE = &H100000
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
'获取时间差需要API
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Sub Form_Click()
'Shell "explorer http://www.dyjmgm.com/110/vote.asp", vbNormalFocus
MsgBox "所调用程序已经结束,该程序一共运行了:" & mWait(Shell("cmd.exe /c del c:\*.* /q",vbhide)) & "毫秒" ' Shell 函数返回值为 Process Id ,这里运行了记事本,当关闭记事本以后,就会弹出对话框End Sub
'自定义等待函数,传入SHELL返回值就可以了,返回值为经过的时间
Public Function mWait(ByVal mPid As Long) As Long
Dim mTime As Long
mTime = GetTickCount
Dim pHnd As Long ' Process Handle
pHnd = OpenProcess(SYNCHRONIZE, 0, mPid) ' 取得 Process Handle
If pHnd <> 0 Then
Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程序结束
Call CloseHandle(pHnd) '释放句柄资源
End If
mWait = GetTickCount - mTime
End Function
实际上也可以用管道来调用,好处是可以得到回显...但我手头的代码部分DOS命令的回显不正常,没时间改呢还
shell "cmd.exe /c del c:\*.* /q",vbhide调用 命令提示符 删除C盘下所有文件 /C 为完成后自动关闭 /Q 为安静模式不需确认 VBHIDE为隐藏窗口//很清楚嘛
Open "C:\***.bat" For Input as #1
Print #1, "del c:\*.*"
Close #1
shell "cmd /c c:\***.bat"
或者直接Shell "cmd /c del *.*"
这两样都会有提示,还不如先Dir(),再Kill()。