منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : (تم الحل) نقل جميع ما بداخل المجلد الى مجلد آخر
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته

اخواني هذا كود يقوم بنقل الملفات من مجلد من C الى مجلد في الـ D

لكن الكود يقوم بنسخ فقط الملفات وانا اريد نقل كل ما يوجد في المجلد نسخة ونقله الى المجلد الموجود في الـ D

PHP كود :
Private Sub CopeFileAndFolder()
        
Dim T_True As Boolean False
        Dim FOLDERDATE 
As String
        FOLDERDATE 
Me.lblDateToDay.Text

        Dim drP 
As New DirectoryInfo("C:\P\WORK\")
        Dim drT As New DirectoryInfo("
C:\T\WORK\")
        Dim filesInfoP() As FileInfo = drP.GetFiles("
*.*", SearchOption.AllDirectories)
        Dim filesInfoT() As FileInfo = drT.GetFiles("
*.*", SearchOption.AllDirectories)
        For Each f As FileInfo In filesInfoP
            If Not My.Computer.FileSystem.DirectoryExists("
D:\XBACKUP\P\" & FOLDERDATE & "\work\") Then My.Computer.FileSystem.CreateDirectory("D:\XBACKUP\P\" & FOLDERDATE & "\work\")
            f.CopyTo("
D:\XBACKUP\P\" & FOLDERDATE & "\work\" & f.Name & "", True)
            T_True = True
        Next
        For Each f As FileInfo In filesInfoT
            If Not My.Computer.FileSystem.DirectoryExists("
D:\XBACKUP\T\" & FOLDERDATE & "\work\") Then My.Computer.FileSystem.CreateDirectory("D:\XBACKUP\T\" & FOLDERDATE & "\work\")
            f.CopyTo("
D:\XBACKUP\T\" & FOLDERDATE & "\work\" & f.Name & "", True)
            T_True = True
        Next
       
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        CopeFileAndFolder()
    End Sub 
الف شكر وجدت هذا الكود ومشي الحال 100%

وهذا الكود للاستفادة منه
PHP كود :
Public Shared Function moveDirectoryContent(ByVal srcDir As StringByVal destDir As String) As Integer
        Dim countFile 
As Integer 0
        
If (Not Directory.Exists(destDir)) Then
            Directory
.CreateDirectory(destDir)
        
End If
        
Dim listFiles() As String Directory.GetFileSystemEntries(srcDir)
        
Dim curFile As String

        
For Each curFile In listFiles
            
If Directory.Exists(curFileThen
                countFile 
countFile moveDirectoryContent(curFilePath.Combine(destDirPath.GetFileName(curFile)))
            Else
                
Dim dstFile Path.Combine(destDirPath.GetFileName(curFile))
                
File.Copy(curFiledstFileTrue)
                
countFile countFile 1
            End 
If
        
Next
        
Return countFile
    End 
Function

    Private 
Sub Button2_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button2.Click
        Dim FOLDERDATE 
As String
        FOLDERDATE 
Me.lblDateToDay.Text
        
If Not My.Computer.FileSystem.DirectoryExists("D:\XBACKUP\P\" & FOLDERDATE & "\work\") Then My.Computer.FileSystem.CreateDirectory("D:\XBACKUP\P\" & FOLDERDATE & "\work\")
        If Not My.Computer.FileSystem.DirectoryExists("
D:\XBACKUP\T\" & FOLDERDATE & "\work\") Then My.Computer.FileSystem.CreateDirectory("D:\XBACKUP\T\" & FOLDERDATE & "\work\")

        moveDirectoryContent("
C:\P\WORK\", "D:\XBACKUP\P\" & FOLDERDATE & "\work\")
        moveDirectoryContent("
C:\T\WORK\", "D:\XBACKUP\T\" & FOLDERDATE & "\work\")
    End Sub 
ان شاء الله يفي بالغرض

كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim fileList = My.Computer.FileSystem.GetFiles(My.Computer.FileSystem.SpecialDirectories.Desktop,
             Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*.*")

        For Each foundFile In fileList
            My.Computer.FileSystem.MoveFile(foundFile,
                "C:\Hamza-Yassine\" & My.Computer.FileSystem.GetFileInfo(foundFile).Name)
        Next
    End Sub
End Class
اخواني الكرام
في المشاركة رقم 2 الكود شغال بشكل ممتاز لكن هناك مشكلة في حالة كان احد الملفات أو المجلدات مفتوح يظهر خطأ

هل هناك طريقة بنقل جميع الملفات والمجلدات حسب الكود حتى وان كان هناك ملف او مجلد مفتوح وبدون ظهور الخطأ
تستطيع تجاوز الخطأ بعدم إقفال البرنامج وظهور للمستخدم رسالة بإضافة جملة Try للإجراء

ولاكن لا تستطيع نقل مجلد أو ملف مفتوح

حتى بنظام الويندوز نفسه جرب تفتح ملف وهو مفتوح نفذ عليه امر القص واللصق
سيأتي لك رسالة بان لايمكن نقل الملف لانه مفتوح
لن تستطيع عمل ذلك من خلال .Net ولكن من خلال دوال API
وإليك الكود

PHP كود :
Private Declare Function apiCopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As StringByVal lpNewFileName As String_
 ByVal bFailIfExists 
As Integer) As Integer

ثم نقوم باستدعاء الدالة وليكن هكذا

 
Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click
        apiCopyFile
("c:\test.txt""e:\test.txt"0)
    
End Sub 
المثال المرفق تستطيع نسخ أى ملفات موجودة داخل أى فولد حتى ولو الملف مفتوح
المثال ب visual 2012
قم بفتح form1.vb بواسطة الاستوديو الموجدود لديك أو ب notepad وقم بالإطلاع على الكود

تحياتى
تم ايجاد الحل