2013-04-14 39 views
1

以下代码将从SourceDirectory中提取今天修改的文件,并将它们放入FilesExtracted文件夹中,然后该批处理文件将删除sourceDirectory中其余文件。但在此之后,全部完成了一套全新的文件将从OriginalTestFiles文件夹中复制并放入sourceDirectory中,但它不会这样做。有没有人认为这可能是因为批处理文件没有停止其操作,并且仍在删除sourceDirectory中的文件,或者还有其他问题。谢谢你们!导致批处理文件完成其操作,继续之前?

Imports System.IO 

Public Class frmExtractionator 

' Dim txtFiles1 As Control 
Dim sourceDirectory As String = "F:\CopierFolderforTestDriveCapstone" 
Dim archiveDirectory As String = "F:\FilesExtracted" 
Dim originalDirectory As String = "F:\OriginalTestFiles" 

Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click 

    Try 

     Dim txtFiles = Directory.EnumerateFiles(sourceDirectory) 

     If (Not System.IO.Directory.Exists(archiveDirectory)) Then 
      System.IO.Directory.CreateDirectory(archiveDirectory) 
     End If 


     For Each currentFileLoc As String In txtFiles 

      Dim fileName = currentFileLoc.Substring(sourceDirectory.Length + 1) 



      If (IO.File.GetLastWriteTime(currentFileLoc).ToString("MM/dd/yyyy") = DateTime.Now.ToString("MM/dd/yyyy")) Then 
       MessageBox.Show(currentFileLoc & " moved", "Moved Succesfully") 
       File.Move(currentFileLoc, Path.Combine(archiveDirectory, fileName)) 

      End If 

     Next 
    Catch eT As Exception 
     Console.WriteLine(eT.Message) 
    End Try 

    System.Diagnostics.Process.Start("F:\poop.bat") 


    Try 
     Dim txtFiles2 = Directory.EnumerateFiles(originalDirectory) 

     For Each currentFileLoc2 As String In txtFiles2 

      Dim fileName = currentFileLoc2.Substring(originalDirectory.Length + 1) 

      File.Move(currentFileLoc2, Path.Combine(sourceDirectory, fileName)) 

     Next 
    Catch eT As Exception 
     Console.WriteLine(eT.Message) 
    End Try 
End Sub 

End Class 

回答

0

你可以得到process作为变量,一旦你开始它和wait for it to exit

Dim theProcess As Process = Process.Start("F:\poop.bat") 
theProcess.WaitForExit() 
+0

完美。解决了我的问题。非常感谢! –

0

尝试监视过程完成...

'Start the process. 
Dim Proc = Process.Start("F:\poop.bat") 
'Wait for the window to finish loading. 
Proc.WaitForInputIdle() 
'Wait for the process to end. 
Proc.WaitForExit() 

... 
相关问题