Tìm trong:Webe-CHÍP

Bộ gõ (kiểu Vni/Telex/Viqr)Tắt (Alt+T)Mở (Alt+M)

 
Trang chủ ĐÓ HỎI, ĐÂY TRẢ LỜI TT 353

Dùng VB6 để sao chép tập tin vào mọi thư mục

Đó hỏi: Xin e-CHÍP hướng dẫn cách viết một đoạn mã bằng VB6 để sao chép một tập tin vào mọi thư mục trong hệ thống (ví dụ: tập tin desktop.ini). Nếu trong thư mục có tập tin đó rồi thì tự động ghi đè lên mà không cần hỏi. <xuantruong83vn@>

Đây trả lời: Để chép tập tin vào tất cả thư mục, bạn phải đọc được hết các thư mục trên một ổ đĩa và lưu vào một danh sách, sau đó dùng lệnh FileCopy để chép tập tin lần lượt vào mỗi thư mục trong danh sách đọc được. Giả sử tập tin desktop.ini được đặt trong thư mục gốc của ổ đĩa D. Ta sẽ thiết kế một ứng dụng để chép tập tin này vào tất cả thư mục trên ổ đĩa D.
Trong VB6, bạn tạo một project mới. Trên form Form1 mặc định, vẽ một ListBox có tên là List1 (sau khi chạy thử ứng dụng thành công, bạn có thể gán thuộc tính Visible = False), một DirListBox có tên là Dir1 (thuộc tính Visible = False), và một CommandButton có tên là Command1, rồi gõ vào đoạn mã 1.

Đoạn mã 1

Private Sub Command1_Click()
     DocCauTrucThuMuc ("D:\")
     For i = 0 To List1.ListCount - 1
          FileCopy "D:\desktop.ini", List1.List(i) & "\desktop.ini"
     Next
End Sub
Sub DocCauTrucThuMuc(ByVal sTenODia As String)
Dim iLevel As Integer, iMaxSize As Integer
Dim i As Integer, j As Integer
ReDim iDirCount(22) As Integer
ReDim sdirs(22, 1) As String
iLevel = 1
iDirCount(iLevel) = 1
iMaxSize = 1
sdirs(iLevel, iDirCount(iLevel)) = Left$(sTenODia, 2) & "\"
Do
    iLevel = iLevel + 1
    iDirCount(iLevel) = 0
    For j = 1 To iDirCount(iLevel - 1)
        Dir1.Path = sdirs(iLevel - 1, j)
        Dir1.Refresh
        If iMaxSize < (iDirCount(iLevel) + Dir1.ListCount) Then
            ReDim Preserve sdirs(22, _
            iMaxSize + Dir1.ListCount + 1) As String
            iMaxSize = Dir1.ListCount + iDirCount(iLevel) + 1
        End If
        For i = 0 To Dir1.ListCount - 1
            iDirCount(iLevel) = _
            iDirCount(iLevel) + 1 'count
            'of sub-dirs
            sdirs(iLevel, iDirCount(iLevel)) = Dir1.List(i)
        Next i
    Next j
    List1.Clear
    If iDirCount(iLevel) = 0 Then
        For i = 1 To iLevel
            For j = 1 To iDirCount(i)
                List1.AddItem sdirs(i, j)
            Next j
        Next i
        Exit Do
    End If
Loop
End Sub

CHƯƠNG CAN CHÍP

[Đầu trang]