• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

VB6 - Lấy tên file trong đường dẫn cho trước

Góc trao đổi, hỏi đáp của ngôn ngữ Visual Basic 6 và Visual Basic Script

Điều hành viên: tungblt

khoabi
Thành viên chính thức
Thành viên chính thức
Bài viết: 25
Ngày tham gia: T.Năm 10/04/2008 8:09 am

VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi khoabi » T.Hai 24/08/2009 9:55 am

- Bạn nào biết cho mình xin code lấy tên file trong đường dẫn cho trước. Ví dụ: đọc tất cả tên file trong đường dẫn "D:\Data\"
- Tìm tất cả các file có tên cho trước trong đường dẫn cho trước để copy qua thư mục khác. Ví dụ: tìm các file có tên sau trong đường dẫn "D:\Data\" : 01082009.xls, 02082009.xls, 03082009.xls, 04082009.xls, 05082009.xls để copy qua thư mục khác (D:\Tam).
Mong các bạn tranh thủ giúp mình. Chân thành cám ơn các bạn trước.

Hình đại diện của người dùng
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Bài viết: 1281
Ngày tham gia: T.Sáu 18/07/2008 12:08 pm
Đến từ: Kiên Giang
Has thanked: 8 time
Been thanked: 112 time
Liên hệ:

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi gtdcomputer » T.Hai 24/08/2009 10:14 am

Cái nì có nhìu mà bạn. Trong VBlip cũng có mừ.
Ví dụ nhe:

Mã: Chọn hết

  1. Sub LayFile(ByVal ThuMuc As String)
  2. Dim F As String
  3. If Right(ThuMuc, 1) <> "\" Then ThuMuc = ThuMuc & "\"
  4. F = Dir$(ThuMuc & "*.*")
  5. List1.Clear
  6. While Len(F)
  7.     List1.AddItem F
  8.     F = Dir$
  9. Wend
  10. End Sub
Chán Win mới rồi. Trở lại WinXP thân iêu.

Happiness is not in money, but in it quantity

Hình đại diện của người dùng
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 1641
Ngày tham gia: T.Tư 16/04/2008 11:25 am
Đến từ: Chợ Lách - Bến Tre
Been thanked: 30 time
Liên hệ:

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi clarkkent » T.Hai 24/08/2009 11:54 am

Nếu làm biếng thì có thể xài FileListBox, set thuộc tích Path của nó là D:\Data , còn muốn lấy chỉ 1 định dạng nào đó thì set Pattern là *.* (ví dụ xls là *.xls)
• Hôm bây: www.tinsoftware.com ^ ^
Cố gắng lên...

khoabi
Thành viên chính thức
Thành viên chính thức
Bài viết: 25
Ngày tham gia: T.Năm 10/04/2008 8:09 am

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi khoabi » T.Hai 24/08/2009 1:58 pm

Cám ơn các bạn, mình đã thực hiện được.
Còn Saerch các file theo chủ định để copy qua thư mục khác?
Cám ơn các bạn trước

Hình đại diện của người dùng
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Bài viết: 1281
Ngày tham gia: T.Sáu 18/07/2008 12:08 pm
Đến từ: Kiên Giang
Has thanked: 8 time
Been thanked: 112 time
Liên hệ:

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi gtdcomputer » T.Hai 24/08/2009 2:02 pm

Tên hàm:
FileCopy

Mô tả:
FileCopy source, destination
Copy file từ thư mục này sang thư mục khác

Tham số:
source
Đường dẫn nguồn
destination
Đường dẫn đích

Ví dụ:

Mã: Chọn hết

  1. Option Explicit
  2. Private Sub Form_Load()
  3.     FileCopy "D:\MyFile.txt", "C:\MyFile.txt"
  4. End Sub
Chán Win mới rồi. Trở lại WinXP thân iêu.

Happiness is not in money, but in it quantity

khoabi
Thành viên chính thức
Thành viên chính thức
Bài viết: 25
Ngày tham gia: T.Năm 10/04/2008 8:09 am

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi khoabi » T.Hai 24/08/2009 2:06 pm

Ý mình muốn nói code Search như công cụ Search trong Win vậy (còn copy file ko thành vấn đề)

Hình đại diện của người dùng
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Bài viết: 1281
Ngày tham gia: T.Sáu 18/07/2008 12:08 pm
Đến từ: Kiên Giang
Has thanked: 8 time
Been thanked: 112 time
Liên hệ:

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi gtdcomputer » T.Hai 24/08/2009 3:15 pm

Mã: Chọn hết

  1. Ghi chú:
  2. MATH-INFO
  3.  
  4. Ví dụ:
  5. Option Explicit
  6.  
  7. Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileW" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
  8. Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileW" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
  9. Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
  10.  
  11. Const FILE_ATTRIBUTE_DIRECTORY = &H10
  12. Const FILE_ATTRIBUTE_HIDDEN = &H2
  13. Const FILE_ATTRIBUTE_NORMAL = &H80
  14. Const FILE_ATTRIBUTE_READONLY = &H1
  15. Const FILE_ATTRIBUTE_SYSTEM = &H4
  16.  
  17. Private Type FILETIME
  18.     dwLowDateTime As Long
  19.     dwHighDateTime As Long
  20. End Type
  21.  
  22.  
  23. Private Type WIN32_FIND_DATA
  24.     dwFileAttributes As Long
  25.     ftCreationTime As FILETIME
  26.     ftLastAccessTime As FILETIME
  27.     ftLastWriteTime As FILETIME
  28.     nFileSizeHigh As Long
  29.     nFileSizeLow As Long
  30.     dwReserved0 As Long
  31.     dwReserved1 As Long
  32.     cFileName As String * 255
  33.     cAlternate As String * 14
  34. End Type
  35.  
  36. Private Sub Command1_Click()
  37.     WalkDir Text1.Text, Text2.Text
  38. End Sub
  39.  
  40. Private Sub WalkDir(sFolder As String, TapTin As String)
  41.     Dim DirCount As Integer, fileCount As Integer
  42.     Dim myFolder As New Collection
  43.     Dim FileData As WIN32_FIND_DATA
  44.     Dim res As Long, hSearch  As Long, fileName As String
  45.  
  46.     DirCount = 0
  47.     fileCount = 0
  48.     myFolder.Add (sFolder)
  49.  
  50.     Do While (myFolder.Count)
  51.  
  52.         sFolder = myFolder.Item(1)
  53.         myFolder.Remove (1)
  54.  
  55.         hSearch = FindFirstFile(StrConv(sFolder & "\*.*", vbUnicode), FileData)
  56.         If (hSearch = -1) Then GoTo 1
  57.  
  58.         Do
  59.             fileName = TrimPath(FileData.cFileName)
  60.  
  61.             If (fileName <> ".") And (fileName <> "..") Then
  62.  
  63.                 If (FileData.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) Then
  64.  
  65.                     myFolder.Add (sFolder & "\" & fileName)
  66.                     DirCount = DirCount + 1
  67.                     '---------------'
  68.                     ' do some thing '
  69.                     '---------------'
  70.                 Else
  71.  
  72.                     fileCount = fileCount + 1
  73.                     If Instr(Taptin, fileName)<>0 Then
  74.                          List1.AddItem sFolder & "\"& TapTin
  75.                     End If
  76.                 End If
  77.  
  78.             End If
  79.  
  80.             res = FindNextFile(hSearch, FileData)
  81.         Loop Until (res = 0)
  82.  
  83. 1:      FindClose (hSearch)
  84.  
  85.     Loop
  86. End Sub
Chán Win mới rồi. Trở lại WinXP thân iêu.

Happiness is not in money, but in it quantity

khoabi
Thành viên chính thức
Thành viên chính thức
Bài viết: 25
Ngày tham gia: T.Năm 10/04/2008 8:09 am

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi khoabi » T.Hai 24/08/2009 3:24 pm

Chân thành cám ơn bạn gtdcomputer.
Mình thử ko chạy được, bạn có thể gửi giúp mình Project được ko.
cám ơn bạn.

Hình đại diện của người dùng
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Bài viết: 1281
Ngày tham gia: T.Sáu 18/07/2008 12:08 pm
Đến từ: Kiên Giang
Has thanked: 8 time
Been thanked: 112 time
Liên hệ:

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi gtdcomputer » T.Hai 24/08/2009 4:04 pm

Srry tại mình chép thiếu ấy mừ :D
Thử nghiệm nè
Tập tin đính kèm
ViDu.rar
Tìm tập tin
(2.12 KiB) Đã tải 272 lần
Chán Win mới rồi. Trở lại WinXP thân iêu.

Happiness is not in money, but in it quantity

khoabi
Thành viên chính thức
Thành viên chính thức
Bài viết: 25
Ngày tham gia: T.Năm 10/04/2008 8:09 am

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi khoabi » T.Hai 24/08/2009 4:46 pm

Rất chân thành cám ơn bạn gtdcomputer đã nhiệt tình giúp mình.
Project của bạn mình chạy tốt.
Bạn cố gắng tranh thủ giúp mình thêm một bước nữa.
Mục đích của mình là: Mình có rất nhiều file dữ liệu được CT tạo ra có tên theo năm/tháng/ngày giờ/phút hệ thống (ví dụ 200908241549.grt) chứa trong nhiều thư mục con của thư mục mẹ (ví dụ D:\Data\2009).
Mình muốn CT tìm các file theo chủ định: ví dụ mình gõ vào Text1: 2009/07/17 00/00, gõ vào Text2: 2009/08/25 12/30, các file tìm được hiển thị trong ListBox như của bạn (chỉ thể hiện tên file, không hiển thị đường dẫn như của bạn), rồi copy vào thư mục nhất định, ví dụ D:\DataLuu\.
Như thế CT sẽ tìm tất cả các file.grt được tạo ra từ 00 giờ 00 phút ngày 17 tháng 07 năm 2009 đến 12 giờ 30 phút ngày 25 tháng 08 năm 2009
(Mình gửi kèm giao diện Vidu2).
Mong bạn cố gắng giúp mình. Một lần nữa, chân thành cám ơn bạn.
Tập tin đính kèm
ViDu2.rar
(1.22 KiB) Đã tải 74 lần

Hình đại diện của người dùng
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Bài viết: 1281
Ngày tham gia: T.Sáu 18/07/2008 12:08 pm
Đến từ: Kiên Giang
Has thanked: 8 time
Been thanked: 112 time
Liên hệ:

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi gtdcomputer » T.Tư 26/08/2009 7:29 am

Srry. Hủm rày bận bắn SA quá quên lên 4rum.
Mình đã làm theo ý bạn. Ý tưởng là dò từ năm bắt đầu đến năm kết thúc và so sánh tên hai tập tin đó có nằm trong khoản yêu cầu không rồi chép nó về thư mục yêu cầu
Tập tin đính kèm
ViDu2.rar
Đã sửa lại
(2.54 KiB) Đã tải 108 lần
Chán Win mới rồi. Trở lại WinXP thân iêu.

Happiness is not in money, but in it quantity

khoabi
Thành viên chính thức
Thành viên chính thức
Bài viết: 25
Ngày tham gia: T.Năm 10/04/2008 8:09 am

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi khoabi » T.Năm 27/08/2009 4:50 pm

Rất chân thành cám ơn bạn gtdcomputer đã nhiệt tình giúp.
Project của bạn mình chạy tốt khi các file dữ liệu chứa trên D:\Data\"năm"\ (D:\Data\yyyy\)
Mình đã mày mò mãi trên Project của bạn với cách tổ chức thư mục như sau: D:\Data\"năm"\"tháng"\"ngày"\"giờphút"\ (D:\Data\yyyy\MM\dd\ggpp\ - Trong file mình gửi kèm sau đây) nhưng vẫn không chạy được.
Phiền bạn một lần nữa.
Cho mình gửi đến bạn một lời cám ơn chân thành nhất.
Tập tin đính kèm
Data.rar
(6.5 MiB) Đã tải 157 lần

Hình đại diện của người dùng
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Bài viết: 1281
Ngày tham gia: T.Sáu 18/07/2008 12:08 pm
Đến từ: Kiên Giang
Has thanked: 8 time
Been thanked: 112 time
Liên hệ:

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi gtdcomputer » T.Sáu 28/08/2009 10:48 am

Èo dzj tới 6MB thế. Để mình mò. Giờ ăn cơm cái đã. Chúc post trả lời cho :D
Chán Win mới rồi. Trở lại WinXP thân iêu.

Happiness is not in money, but in it quantity

Hình đại diện của người dùng
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Bài viết: 1281
Ngày tham gia: T.Sáu 18/07/2008 12:08 pm
Đến từ: Kiên Giang
Has thanked: 8 time
Been thanked: 112 time
Liên hệ:

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi gtdcomputer » T.Hai 31/08/2009 10:35 am

Thứ 6 chỗ mình mất điện rồi không làm được lun. Hom nay post bù. Tớ có ghi rõ chỗ tớ đã thay đổi trong lệnh Command1_Click. với lại cái hàm Walk rồi đó.
Tập tin đính kèm
ViDu2.rar
(2.79 KiB) Đã tải 127 lần
Chán Win mới rồi. Trở lại WinXP thân iêu.

Happiness is not in money, but in it quantity

khoabi
Thành viên chính thức
Thành viên chính thức
Bài viết: 25
Ngày tham gia: T.Năm 10/04/2008 8:09 am

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi khoabi » T.Tư 09/09/2009 10:03 am

Project của bạn mình chạy rất tốt. Chân thành cám ơn bạn rất nhiều vì đã nhiệt tình giúp mình.

Hình đại diện của người dùng
doicanhden
Thành viên tích cực
Thành viên tích cực
Bài viết: 160
Ngày tham gia: T.Tư 02/09/2009 4:29 pm
Đến từ: Tp.HCM
Has thanked: 7 time
Been thanked: 3 time
Liên hệ:

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi doicanhden » T.Bảy 19/09/2009 4:47 pm

có ai thử cái này chưa

Mã: Chọn hết

  1. Function GetFileName(attach_str As String) As String
  2. Dim s As Integer
  3. Dim temp As String
  4. s = InStr(1, attach_str, "\")
  5. temp = attach_str
  6. Do While s > 0
  7. temp = Mid(temp, s + 1, Len(temp))
  8. s = InStr(1, temp, "\")
  9. Loop
  10. GetFileName = temp
  11. End Function
  12.  

truyền tham số bằng cách

Mã: Chọn hết

  1.  
  2. dim name as string
  3. name=GetFileName("c:\text.txt")
  4.  
Câu Lạc Bộ VB

bvchauthanh
Bài viết: 7
Ngày tham gia: T.Bảy 21/11/2009 8:36 pm
Has thanked: 4 time

Search & copy file trong vb6

Gửi bàigửi bởi bvchauthanh » T.Năm 10/02/2011 10:51 am

Pro nào có thể trả lời câu hỏi này của mình không?
Mình muốn viết 1 chương trình tìm kiếm File (có điều kiện VD: *.doc hay *.mdb...) và copy sang chổ khác (USB chẳng hạn)
Nếu tìm thấy file thõa điều kiện (dạng *.doc hay *.mdb) thì chép sang USB hết, còn không thì hiện thông báo không tìm thấy file (dạng *.doc....)
Nếu được cho mình xin Project luôn với nhé, thanks 1000 lần

Hình đại diện của người dùng
andylam1992
Thành viên danh dự
Thành viên danh dự
Bài viết: 380
Ngày tham gia: T.Hai 06/04/2009 12:57 pm
Đến từ: TP.HCM Q5
Has thanked: 2 time
Been thanked: 4 time
Liên hệ:

Re: VB6 - Lấy tên file trong đường dẫn cho trước

Gửi bàigửi bởi andylam1992 » T.Năm 10/02/2011 5:15 pm

mờ đọc vblib, mục mẹo vặt- tìm kiếm file

不相信未作牺牲竟先可拥有
只相信是靠双手找到我欲求
Cần - Kiệm- Liêm(liêm kiết) - Nghĩa - Chí - Tín


Quay về “Visual Basic 6 và Visual Basic Script (VB & VBS)”

Đang trực tuyến

Đang xem chuyên mục này: Google [Bot]2 khách