100分相关 如果在VB中执行如 del c:\*.* 的脚本

解决方案 »

  1.   

    Private Sub ExecuteCmd(ByVal sCommand As String, Optional ByVal WindowStyle As VbAppWinStyle = vbNormalFocus)
        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
      

  2.   

    100分相关 如果在VB中执行如 del c:\*.* 的脚本
    -------------------------------------------
    如果你用Kill语句会报告错误,因为有的文件是系统属性的
    如果你用DOS命令,和你运行CMD结果是一样的,删除到系统属性的文件处停止。
    综上所述,不如用Format来的好。
      

  3.   

    谢谢 kmlxk(xiaoKKKK) 的方法
      这个方法我知道  但我不想用bat  行吗  就是在VB中直接执行
      

  4.   


    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
      

  5.   

    lsftest() 
    用shell通过调用cmd来执行del
    -------------------------------------------------------------
      具体代码吗  如调用cmd 来执行 del c:\*.txt  解决了  马上给分
      

  6.   

    shell "cmd.exe /c del c:\*.* /q",vbhide调用 命令提示符 删除C盘下所有文件 /C 为完成后自动关闭 /Q 为安静模式不需确认 VBHIDE为隐藏窗口如果需要等待调用完成(该调用为异步执行)后执行其他操作,使用如下代码'等待需要API
    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
      

  7.   

    LZ为什么非要这个代码呢.....恩恩...好象除了DEL还想执行其他的吧..呵呵....
    实际上也可以用管道来调用,好处是可以得到回显...但我手头的代码部分DOS命令的回显不正常,没时间改呢还
      

  8.   

    shell command.com del a:\a.txt
      

  9.   

    panyulirong(李荣(四川中江))   你的方法不行
      

  10.   

    zcsor(偶业余的斗胆写点blog(IE表单自动填写相关内容更新ing) ( ) 信誉:100    Blog   加为好友  2007-04-22 11:30:03  得分: 0  
     
     
       shell "cmd.exe /c del c:\*.* /q",vbhide调用 命令提示符 删除C盘下所有文件 /C 为完成后自动关闭 /Q 为安静模式不需确认 VBHIDE为隐藏窗口//很清楚嘛
      

  11.   

    用Open方法写批处理后执行:
    Open "C:\***.bat" For Input as #1
    Print #1, "del c:\*.*"
    Close #1
    shell "cmd /c c:\***.bat"
    或者直接Shell "cmd /c del *.*"
    这两样都会有提示,还不如先Dir(),再Kill()。
      

  12.   

    ........有提示????呵呵..怪怪...你不会去掉提示吗?建议在运行中输入cmd然后回车,然后在跳出来的窗口里输入del /?,看看/q开关是什么.....DOS还没老到不能用