Tạo file *.bat để lọc file (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

anhthoichoem

Thành viên mới
Tham gia
26/10/08
Bài viết
20
Được thích
1
Chào các anh chị
Không biết anh chị trong diễn đàn có ai rành về command trong dos hướng dẫn giúp em tạo file *bat để xử lý trong tình huống này:
Em có 1 folder chứa nhiều thư mục con khác nhau, trong thư mục con lại có nhiều loại file khác nhau. Ví dụ folder gốc ở ổ D:\Thumucgoc. Em muốn copy những file excel *.xls mà tên file có chứa ký tự AE0A đến 1 địa chỉ khác ví dụ như D:\Thumucloc
Vì công việc cũng gấp mà lọc bằng tay thì rất là nhiều, mong anh chị anh rành giúm em với ạ. em cảm ơn anh chị nhiều
 
Hệ điều hành cũng làm được, cần gì phải phức tạp hóa vấn đề.\

Vào D:\Thumucgoc, trong ô Search (góc trên bên phải) bạn đánh *.AE0A*.xls
Máy tính sẽ lọc ra các file excel mà tên file chứa chuỗi ký tự AE0A
Chọn các files đó, rồi Copy/Paste sang thư mục khác.
 
Vấn đề là ở chỗ window chỉ cho copy số lượng ít thôi @nvson tầm 2000 file đổ lại. đằng này số lượng hơn 20000 thì không thể dùng win nên mình mới phải dùng cách này.
 
Vấn đề là ở chỗ window chỉ cho copy số lượng ít thôi @nvson tầm 2000 file đổ lại. đằng này số lượng hơn 20000 thì không thể dùng win nên mình mới phải dùng cách này.
Nếu dùng lệnh thì mình chỉ có copy tất cả file như bạn nói nhưng nó kèm cả subfolder (folder con) cơ.
Còn dồn hết tất cả các file vào 1 folder thui thì VBA đc ko?
 
Nếu dùng lệnh thì mình chỉ có copy tất cả file như bạn nói nhưng nó kèm cả subfolder (folder con) cơ.
Còn dồn hết tất cả các file vào 1 folder thui thì VBA đc ko?
chính xác như bạn nói lun. Mình cũng đang dùng 1 file bat nó cho phép copy nhưng nó copy lun cả subfolder.
Nếu làm VBA như bạn nói thì có lọc được những đuôi khác ngoài *.xls không bạn? Nếu được thì quá ngon rùi.
 
chính xác như bạn nói lun. Mình cũng đang dùng 1 file bat nó cho phép copy nhưng nó copy lun cả subfolder.
Nếu làm VBA như bạn nói thì có lọc được những đuôi khác ngoài *.xls không bạn? Nếu được thì quá ngon rùi.
Nếu Copy Files thì sử dụng xcopy hay Robocopy kết hợp với Fso nữa thì tuyệt vời Ông mặt trời ....Tìm trong mớ bài của mình cũng có ... hay Search GPE .... ra 1 đống
 
Nếu Copy Files thì sử dụng xcopy hay Robocopy kết hợp với Fso nữa thì tuyệt vời Ông mặt trời ....Tìm trong mớ bài của mình cũng có ... hay Search GPE .... ra 1 đống
Bác kieu manh ơi, em cũng dung robocopy voi FSO nhưng có 2 vấn đề là:
1. trong robocopy em ko tìm ra đc cách copy mà chỉ move
2. mỗi lần chạy robo với 1 sub folder thì command nó hiện nên rất nhiều (với nhiều subfolder), 1 lúc sau nó mới tự tắt hết (do chạy nhiều cmd quá)
Bác gửi file cho em thọ giáo với
File của em
 

File đính kèm

Bác kieu manh ơi, em cũng dung robocopy voi FSO nhưng có 2 vấn đề là:
1. trong robocopy em ko tìm ra đc cách copy mà chỉ move
2. mỗi lần chạy robo với 1 sub folder thì command nó hiện nên rất nhiều (với nhiều subfolder), 1 lúc sau nó mới tự tắt hết (do chạy nhiều cmd quá)
Bác gửi file cho em thọ giáo với
File của em
Bạn dùng /mov là nó copy file trong Folder nguon xong là nó xóa hết trừ file đang chạy...Bạn sửa lại là /s thì nó không xóa Files trong Folder nguon

/MIR là tạo ra Folder giống nguon
...............................

Link bác bill
https://technet.microsoft.com/en-us/library/cc733145(v=ws.10).aspx

Câu 2 mình chưa thử ...Bạn duyệt Folder kiểu đệ quy xem....
 
Lần chỉnh sửa cuối:
Bạn dùng /mov là nó copy file trong Folder nguon xong là nó xóa hết trừ file đang chạy...Bạn sửa lại là /s thì nó không xóa Files trong Folder nguon

/MIR là tạo ra Folder giống nguon
...............................

Link bác bill
https://technet.microsoft.com/en-us/library/cc733145(v=ws.10).aspx

Câu 2 mình chưa thử ...Bạn duyệt Folder kiểu đệ quy xem....

em thi search cái này hay hơn: http://ss64.com/nt/robocopy.html
MIR va /S ko dc bác ah, vì nó sẽ copy cả subfolder. em thử hết rùi, chỉ có mov hoac move là hoặt đọng như ý muốn, nếu như thế thì phải copy folder gốc để dự phòng khi có bất trắc.

Cái thứ 2 thì em cũng chưa hiểu ý bác lăm. hi
 
em thi search cái này hay hơn: http://ss64.com/nt/robocopy.html
MIR va /S ko dc bác ah, vì nó sẽ copy cả subfolder. em thử hết rùi, chỉ có mov hoac move là hoặt đọng như ý muốn, nếu như thế thì phải copy folder gốc để dự phòng khi có bất trắc.

Cái thứ 2 thì em cũng chưa hiểu ý bác lăm. hi
thì tùy người sử dụng mà viết code thôi ...nếu copy trong folder cha thôi thì code đơn giản ....nếu cả cha con cháu chắt nhà nó mà không xác định có mấy tầng lớp thì dùng đệ quy mà duyệt Folder vây...

Sửa lại code của bạn chỉ Copy Folder cha thôi cho nó gon khỏi Fso gì hết
Mã:
Public Sub RobocopyFiles(ByVal FolderCopy As String, ByVal FolderPaste As String)
    Shell ("ROBOCOPY " & """" & FolderCopy & """" & " " & """" & FolderPaste & """" & " /S")
End Sub

Bạn thêm cái chữ to màu đỏ nữa thì bạn có chạy n+1 lần nó cũng không báo cmd nữa
Shell ("ROBOCOPY " & """" & FolderCopy & """" & " " & """" & FolderPaste & """" & " /S"), vbHide
 
Lần chỉnh sửa cuối:
Các bác cứ code với kiếc, dùng trình duyệt tập tin Total Commander là xong.
 
Lần chỉnh sửa cuối:
thì tùy người sử dụng mà viết code thôi ...nếu copy trong folder cha thôi thì code đơn giản ....nếu cả cha con cháu chắt nhà nó mà không xác định có mấy tầng lớp thì dùng đệ quy mà duyệt Folder vây...

Sửa lại code của bạn chỉ Copy Folder cha thôi cho nó gon khỏi Fso gì hết
Mã:
Public Sub RobocopyFiles(ByVal FolderCopy As String, ByVal FolderPaste As String)
    Shell ("ROBOCOPY " & """" & FolderCopy & """" & " " & """" & FolderPaste & """" & " /S")
End Sub

Bạn thêm cái chữ to màu đỏ nữa thì bạn có chạy n+1 lần nó cũng không báo cmd nữa
Shell ("ROBOCOPY " & """" & FolderCopy & """" & " " & """" & FolderPaste & """" & " /S"), vbHide
Cảm ơn bác về cái vbHide, còn " /S" thì bác coi lại nhé. với lại bài toán ở đây là có nhiều subfolder nhé bác.
 
Ý em là copy mỗi file thui, nhử yêu cầu #1 ay a
Vậy có 2 cách sau:
1/ sử dụng cmd mấy hàm Anh Ndu viết đó ....cách này nhanh nhất
2/ Sử dụng Fso duyệt đệ quy lấy hết File trong Folder con cháu paste qua Folder khác ko phải sử dung thêm Robocopy nữa
 
Vậy có 2 cách sau:
1/ sử dụng cmd mấy hàm Anh Ndu viết đó ....cách này nhanh nhất
2/ Sử dụng Fso duyệt đệ quy lấy hết File trong Folder con cháu paste qua Folder khác ko phải sử dung thêm Robocopy nữa
Thực sự em mới vô diễn đàn từ cuối 2015 nên ko rõ cách của anh Ndu tn.
Còn ý thứ 2 thì đó chính là em định làm theo cái đó.
@anhthoichoem. Nếu bạn chửa tìm ra phương án tối ưu, thì bạn làm thế này nhé:
1. chạy file bat của bạn, để copy file xls của bạn, như bạn nói nó vẫn còn subfolder.
nếu ko bạn dùng command sau:
ROBOCOPY "Folderbandau" "foldertrunggian" *AE0A*.xls /MIR

2. Sau b1, thì bạn dùng file này, để move tất cả file xls từ folder có đc sau chạy file bat đó sang folder đích.

Note: Nói thêm về robocopy: tại sao nên dùng robocopy, vì tốc độ của nhanh hơn rất nhiều copy thông thường, nên nếu bạn có nhiều file, và file nặng, thì dùng nó là rất ok.
 

File đính kèm

Thực sự em mới vô diễn đàn từ cuối 2015 nên ko rõ cách của anh Ndu tn.
Còn ý thứ 2 thì đó chính là em định làm theo cái đó.
@anhthoichoem. Nếu bạn chửa tìm ra phương án tối ưu, thì bạn làm thế này nhé:
1. chạy file bat của bạn, để copy file xls của bạn, như bạn nói nó vẫn còn subfolder.
nếu ko bạn dùng command sau:
ROBOCOPY "Folderbandau" "foldertrunggian" *AE0A*.xls /MIR

2. Sau b1, thì bạn dùng file này, để move tất cả file xls từ folder có đc sau chạy file bat đó sang folder đích.

Note: Nói thêm về robocopy: tại sao nên dùng robocopy, vì tốc độ của nhanh hơn rất nhiều copy thông thường, nên nếu bạn có nhiều file, và file nặng, thì dùng nó là rất ok.
làm chi mà dài dòng vậy ...xài Fso đi chạy đệ quy cái dẹt là xong... hay kết Fso với xCopy cũng ok mà ..
xCopy kém chi Robocopy ???????????????
 
làm chi mà dài dòng vậy ...xài Fso đi chạy đệ quy cái dẹt là xong... hay kết Fso với xCopy cũng ok mà ..
xCopy kém chi Robocopy ???????????????

Mong sự chỉ giáo của bác, chứ em ko rành đệ quy lắm. Còn về Xcopy thì em thấy nó ít option hơn hẳn và bác search trên mạng thì thấy robocopy đc dùng nhiều hơn:

The most important difference is that robocopy will (usually) retry when an error occurs, while xcopy will not. In most cases, that makes robocopy far more suitable for use in a script.

They are both rubbish! XCOPY was older and unreliable, so Microsoft replaced it with ROBOCOPY, which is still rubbish.
 
Thực sự em mới vô diễn đàn từ cuối 2015 nên ko rõ cách của anh Ndu tn.
Còn ý thứ 2 thì đó chính là em định làm theo cái đó.
@anhthoichoem. Nếu bạn chửa tìm ra phương án tối ưu, thì bạn làm thế này nhé:
1. chạy file bat của bạn, để copy file xls của bạn, như bạn nói nó vẫn còn subfolder.
nếu ko bạn dùng command sau:
ROBOCOPY "Folderbandau" "foldertrunggian" *AE0A*.xls /MIR

2. Sau b1, thì bạn dùng file này, để move tất cả file xls từ folder có đc sau chạy file bat đó sang folder đích.

Note: Nói thêm về robocopy: tại sao nên dùng robocopy, vì tốc độ của nhanh hơn rất nhiều copy thông thường, nên nếu bạn có nhiều file, và file nặng, thì dùng nó là rất ok.
cảm ơn bạn quân lưu nhiều nhé. Mình cũng có tham khảo trên 1 số trang nước ngoài thì có họ note về vấn đề đó thay vì dùng lệnh xcopy nó chép nguyên subfolder thì chỉ cần dùng lệnh copy thui hao hao như này:
for /R D:\GOC %%f in (*.xls) do copy %%f D:\NGUON
 
Mong sự chỉ giáo của bác, chứ em ko rành đệ quy lắm. Còn về Xcopy thì em thấy nó ít option hơn hẳn và bác search trên mạng thì thấy robocopy đc dùng nhiều hơn:

The most important difference is that robocopy will (usually) retry when an error occurs, while xcopy will not. In most cases, that makes robocopy far more suitable for use in a script.

They are both rubbish! XCOPY was older and unreliable, so Microsoft replaced it with ROBOCOPY, which is still rubbish.
Bạn xem lại cú pháp Robocopy

Robocopy [Nguon] [Ðiem den] [File] / Thông so

Nếu Nghiên cứu đệ quy vào link sau coi thêm ....

http://www.giaiphapexcel.com/forum/...i-Thuật-Toán-Đệ-Quy-Trong-Lập-Trình-Với-Excel

Code bạn viết trong đó có bao nhiêu loại Files mặc định nó lấy hết ... Cut hết sang Folder mới
 
Lần chỉnh sửa cuối:
đang rảnh ngồi ko buồn buồn làm cho chủ thớt 1 cục muốn copy cái files nào và chọn tên file dạng nào cũng ok ...._)()(-,,,,,,,

1/ Lưu ý ko copy được Files trong Folder là tiếng việt có dấu vì lần trước làm xcopy chạy lỗi trên Win64 chưa xử lý được ...+-+-+-+

========= Mục Search Options =========

sử dụng toán tử Like vì vậy cần lưu ý như sau:

1/ Phần ExtenFile (là phần mở rộng của File) nếu Copy đuôi file Excel thì Gõ xl*, mọi loại file *

2/ Phần Fullname (là phần tên File ko bao gồm phần mở rộng) nếu Copy tên file có dạng AE0A thì gõ *AE0A*, mọi loại file *

3/ Phần Include sub Folders ...Nếu check vào đó thì nó copy file từ Folder cha ...cháu của cháu nó... Nếu ko check thì chỉ copy file ở folder cha ....

4/ sử dụng thuật toán đệ quy + Fso + cmd nên tốc độ copy khá nhanh ...

Xong Phim ./. /*-*/
 

File đính kèm

Lần chỉnh sửa cuối:
Chào các anh chị
Không biết anh chị trong diễn đàn có ai rành về command trong dos hướng dẫn giúp em tạo file *bat để xử lý trong tình huống này:
Em có 1 folder chứa nhiều thư mục con khác nhau, trong thư mục con lại có nhiều loại file khác nhau. Ví dụ folder gốc ở ổ D:\Thumucgoc. Em muốn copy những file excel *.xls mà tên file có chứa ký tự AE0A đến 1 địa chỉ khác ví dụ như D:\Thumucloc
Vì công việc cũng gấp mà lọc bằng tay thì rất là nhiều, mong anh chị anh rành giúm em với ạ. em cảm ơn anh chị nhiều

Thử code này xem có xài được không

PHP:
Sub Main()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
With Application.FileDialog(msoFileDialogFolderPicker)
    If .Show Then GetAllFiles .SelectedItems(1), fso
End With
End Sub
Function GetAllFiles(ByVal StrFolder As String, fso As Object)
Dim objFolder As Object, objSubFolder As Object, File As Object
Set objFolder = fso.GetFolder(StrFolder)
For Each File In objFolder.Files
    If fso.GetExtensionName(File) Like "xls*" Then
        fso.CopyFile fso.getabsolutepathname(File), ThisWorkbook.Path & "\" & File.Name
    End If
Next
For Each objSubFolder In objFolder.SubFolders
    GetAllFiles objSubFolder.Path, fso
Next objSubFolder
End Function
 

File đính kèm

Bạn thử file xxx.bat này
Mã:
@echo off
pushd %2
for /r %%a in (*%1*.xls) do copy "%%a"  "%3"
popd
Cách dùng
Mã:
xxx AE0A c:\nguon c:\dich
 

Bài viết mới nhất

Back
Top Bottom