Copy các File dạng PDF trong các Folder

Liên hệ QC

hoahuongduong1986

Thành viên thường trực
Tham gia
14/11/18
Bài viết
346
Được thích
40
Dear Anh Chị và các bạn,

Em có một thư mục như sau D:\Bao cao. Trong Forlder Bao cao này có nhiều các Forder con (Gọi là Forder cấp 2) và trong các Forder cấp 2 này có nhiều File PDF. Giá sử em có một File excel đặt trong Forder Bao cao thì có code gì để nó gắp toàn bộ các File dạng PDF trong các Forder cấp 2 ra Forder Bao cao. Em cảm ơn ạ.
 
Dear Anh Chị và các bạn,

Em có một thư mục như sau D:\Bao cao. Trong Forlder Bao cao này có nhiều các Forder con (Gọi là Forder cấp 2) và trong các Forder cấp 2 này có nhiều File PDF. Giá sử em có một File excel đặt trong Forder Bao cao thì có code gì để nó gắp toàn bộ các File dạng PDF trong các Forder cấp 2 ra Forder Bao cao. Em cảm ơn ạ.
Vào folder cấp 2, ctrl A rồi copy paste một nhát cũng nhanh mà bạn
 
Upvote 0
Chép vào Notepad, lưu thành file *.bat. Nhớ chọn Encoding = ANSI

Rồi chạy file *.bat là xong.

PHP:
@echo off
set source = "D:\Bao cao"
set destination = "D:\Bao cao"
for %%F in (%destination%) do set destination="%%~fF"
for /r %source% %%F in (.) do if "%%~fF" neq %destination% ROBOCOPY "%%F" %destination% *.pdf /COPYALL /R:0


1608707738905.png

1608707764813.png
 
Upvote 0
Chép vào Notepad, lưu thành file *.bat. Nhớ chọn Encoding = ANSI

Rồi chạy file *.bat là xong.

PHP:
@echo off
set source = "D:\Bao cao"
set destination = "D:\Bao cao"
for %%F in (%destination%) do set destination="%%~fF"
for /r %source% %%F in (.) do if "%%~fF" neq %destination% ROBOCOPY "%%F" %destination% *.pdf /COPYALL /R:0


View attachment 251690

View attachment 251691
Dạ, em cảm ơn nhiều ạ. A cho em hỏi chút đây là dạng ngôn ngữ gì ạ ?
 
Upvote 0
Dear Anh Chị và các bạn,

Em có một thư mục như sau D:\Bao cao. Trong Forlder Bao cao này có nhiều các Forder con (Gọi là Forder cấp 2) và trong các Forder cấp 2 này có nhiều File PDF. Giá sử em có một File excel đặt trong Forder Bao cao thì có code gì để nó gắp toàn bộ các File dạng PDF trong các Forder cấp 2 ra Forder Bao cao. Em cảm ơn ạ.
Nếu đây là 1 thao tác trong chuỗi thao tác lập trình thì không nói, chứ chỉ đơn giản gắp thả mà cũng phải dùng lệnh thì thấy chẳng ra làm sao.
 
Upvote 0
Nếu đây là 1 thao tác trong chuỗi thao tác lập trình thì không nói, chứ chỉ đơn giản gắp thả mà cũng phải dùng lệnh thì thấy chẳng ra làm sao.
Tại số lượng thư mục con là nhiều đó bạn. Mình cũng có vài thư mục có mấy chục thư mục con, mỗi thư mục con đó lại có vài trăm cái con con nữa. Làm tay thì chắc cũng hết mấy ngày.
 
Upvote 0
Tại số lượng thư mục con là nhiều đó bạn. Mình cũng có vài thư mục có mấy chục thư mục con, mỗi thư mục con đó lại có vài trăm cái con con nữa. Làm tay thì chắc cũng hết mấy ngày.
Sao bạn biết tài vậy? Hay bạn bà con với chủ thớt --=0
 
Upvote 0
Nếu đây là 1 thao tác trong chuỗi thao tác lập trình thì không nói, chứ chỉ đơn giản gắp thả mà cũng phải dùng lệnh thì thấy chẳng ra làm sao.
EM ngoài bắc anh ơi. Tại có một số thao tác thực tế cần làm công việc như vậy nên em hỏi đó anh. Cũng là cách học thêm cái mới từ người có kinh nghiệm và kiến thức ạ !!!
 
Upvote 0
Upvote 0
Dear Anh Chị và các bạn,

Em có một thư mục như sau D:\Bao cao. Trong Forlder Bao cao này có nhiều các Forder con (Gọi là Forder cấp 2) và trong các Forder cấp 2 này có nhiều File PDF. Giá sử em có một File excel đặt trong Forder Bao cao thì có code gì để nó gắp toàn bộ các File dạng PDF trong các Forder cấp 2 ra Forder Bao cao. Em cảm ơn ạ.
Ứng dụng bên bài viết này có thể đáp ứng nhu cầu của bạn

 
Upvote 0
Bạn dùng từ "gắp" có thể gây hiểu lầm. Ít ra là tôi hiểu khác nhiều người. Với tôi "gắp thịt từ đĩa vào bát" thì trong đĩa sẽ không còn thịt nữa. Tức "gắp" là "di chuyển" - MOVE. Có thể ai đó hiểu "gắp" là "sao chép" - COPY.

Tôi xét trường hợp coi "gắp" là COPY.

Nếu là tạo tập tin BAT thì đơn giản: mở notepad -> gõ nội dung

@echo off
set source="D:\Bao cao"
for /r %source% %%F in (.) do copy "%%F\*.pdf" %source%


-> lưu với tên vd. copyfile.bat, với encoding = ANSI.

Tập tin copyfile.bat có thể chạy:
1. trực tiếp bằng cách click vào nó.
2. trong cửa sổ dòng lệnh: di chuyển tới thư mục có tập tin copyfile.bat -> gõ lệnh: copyfile
3. macro trong Excel. Giả sử tập tin copyfile1.bat và tập tin Excel ở cùng thư mục.
Mã:
Sub test()
Dim filename As String
    filename = """" & ThisWorkbook.Path & "\copyfile1.bat"""
    Shell filename, vbNormalFocus
End Sub
------------
Phiên bản 2 cho copyfile.bat

@echo off
set source="D:\Bao cao"
for /r %source% %%F in (.) do (
pushd %%F
copy "*.pdf" %source%)


------------
Nếu "gắp" nghĩa là MOVE thì thay trong tập tin copyfile.bat từ copy thànnh từ move.
------------
Nếu dùng FileSystemObject thì trên GPE đầy. Tự tìm nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy bài #3 có đáp ứng được yêu cầu của bạn không?
Tôi e là bài #3 hiện thời có vấn đề.

set source = "D:\Bao cao" có nghĩa là biến môi trường "source " (có dấu cách trong tên) có giá trị là " D:\Bao cao" (có dấu cách). Không có cái gọk là "source" nên sau đó %source% sẽ có giá trị "" (chỉ có %source % mới là " D:\Bao cao"). Như vậy nếu sửa thành set source= "D:\Bao cao" thì vẫn lỗi. Cho dù đã có %source% nhưng nó có giá trị " D:\Bao cao" chứ không phải "D:\Bao cao".

Nên nhớ là trong lệnh SET thì mọi ký tự từ ký tự "=" trở về trước thuộc về tên biến môi trường, còn mọi ký tự sau "=" thuộc về giá trị. Lỗi này rất dễ sảy ra do sơ ý. Nếu ai còn nghi ngờ điều này thì hãy thực hiện trong cửa sổ dòng lệnh lần lượt 3 lệnh:

set source ="D:\Baocao"
set source="C:\Windows"
set


Rồi kiểm tra kết quả do lệnh SET trả về thì sẽ thấy có 2 biến môi trường:

- biến "source" có giá trị "C:\Windows"
- biến "source " có giá trị "D:\Baocao"

Nếu là 1 biến thì giá trị sau sẽ thay thế cho giá trị trước.

Ngoải lỗi biến môi trường thì có thể còn lỗi khác liên quan tới quyền. Hãy bỏ @echo off trong tập tin BAT rồi chạy nó trong cửa sổ dòng lệnh, và đọc các thông báo.
 
Upvote 0
EM ngoài bắc anh ơi. Tại có một số thao tác thực tế cần làm công việc như vậy nên em hỏi đó anh. Cũng là cách học thêm cái mới từ người có kinh nghiệm và kiến thức ạ !!!
Gửi bạn file đơn giản nhất để thực hiện yêu cầu của bạn
 

File đính kèm

  • MoveFilePDF_fso.xlsm
    15 KB · Đọc: 11
Upvote 0
Gửi bạn file đơn giản nhất để thực hiện yêu cầu của bạn
Cuối năm bận rộn nhiều việc mà em vẫn được trợ giúp của các anh thật đáng quý quá ạ ! Em cảm ơn mọi người, chúc mọi người một giáng sinh vui vẻ một năm mới sắp tới nhiều may mắn và hạnh phúc ạ !
 
Upvote 0
Cuối năm bận rộn nhiều việc mà em vẫn được trợ giúp của các anh thật đáng quý quá ạ ! Em cảm ơn mọi người, chúc mọi người một giáng sinh vui vẻ một năm mới sắp tới nhiều may mắn và hạnh phúc ạ !
Cảm ơn bạn về lời chúc!

Còn chuyện bận rộn cuối năm, đó là đối với nhiều người chứ riêng tôi rảnh huơ à. Lên GPE cũng là tiêu bớt giờ rảnh đó.
 
Upvote 0
Dear Anh Chị và các bạn,

Em có một thư mục như sau D:\Bao cao. Trong Forlder Bao cao này có nhiều các Forder con (Gọi là Forder cấp 2) và trong các Forder cấp 2 này có nhiều File PDF. Giá sử em có một File excel đặt trong Forder Bao cao thì có code gì để nó gắp toàn bộ các File dạng PDF trong các Forder cấp 2 ra Forder Bao cao. Em cảm ơn ạ.
Sẵn đây tôi gửi bạn file liệt kê thư mục con và file có trong từng thư mục. Bạn có thể kết hợp để tìm các thư mục chứa file pdf cần dịch chuyển
 

File đính kèm

  • LietKe_File._FixOK.xlsm
    964.2 KB · Đọc: 10
Upvote 0
Web KT

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

Back
Top Bottom