【发布时间】:2017-02-27 08:03:13
【问题描述】:
我有以下代码来创建一个目录,任务接受一个记录计数,每次记录计数达到所需的数量,比如 1000 条记录,就会创建一个新目录。如果第二次运行该任务,它将向现有目录添加另外 1000 条记录,我希望它跳过这些现有目录并创建一个新目录。我尝试添加各种 ifexists,但总是搞砸,任何帮助将不胜感激
Public Sub Main()
Dim SourceDirectory As String = "E:\Data"
Dim TargetDirectory As String = "E:\CN"
Dim FileExtensionsToProcess As String = "CON*.pdf"
Dim FileCounter As Integer = 0
Dim FolderName As Integer = 1
Dim recordcount As Integer
recordcount = CInt(Dts.Variables("RecordCount").Value)
For Each FileName As String In System.IO.Directory.GetFiles(SourceDirectory, FileExtensionsToProcess)
Dim FileOnly As String = System.IO.Path.GetFileName(FileName)
Try
If Not IO.Directory.Exists(IO.Path.Combine(TargetDirectory, FolderName.ToString())) Then
IO.Directory.CreateDirectory(IO.Path.Combine(TargetDirectory, FolderName.ToString()))
End If
IO.File.Move(FileName, IO.Path.Combine(TargetDirectory, IO.Path.Combine(FolderName.ToString(), FileOnly)))
Catch
End Try
FileCounter += 1
If (FileCounter Mod recordcount) = 0 Then
FolderName += 1
End If
Next
Dts.TaskResult = ScriptResults.Success
End Sub
【问题讨论】:
-
将
recordcount设置为硬编码的小数字,例如5、不要吞下try...catch中可能出现的异常,在for each循环中设置断点,检查你的计数器变量和if语句,调试你的代码,修复错误。 -
你检查目标目录是否存在...但是不要费心计算其中的文件数,然后无论如何移动文件。
标签: vb.net file path directory