Làm cách nào để theo dõi thư mục để thay đổi và thực thi lệnh nếu có, trên Windows?


32

Có những câu hỏi tương tự cho LinuxMac , nhưng tôi đang theo một giải pháp Windows ở đây.

Vấn đề như sau: Tôi muốn viết một số tệp script (js) trong một thư mục và có một trình giám sát chương trình để thay đổi tệp và các tệp mới được thêm vào và chạy lệnh bất cứ khi nào xảy ra (để biên dịch tất cả chúng thành một tập tin duy nhất).

Giải pháp là:

  1. Theo dõi cả thay đổi tập tin và tập tin mới được thêm vào, trong một thư mục.
  2. Chạy một lệnh duy nhất nếu có bất kỳ sự thay đổi.

Sẽ là tốt nhất nếu đó là một giải pháp tích hợp (như đoạn mã JScript hoặc VBscript) hoặc thứ gì đó không yêu cầu cài đặt.


xem blog này cho một số ứng dụng cho windows.
Vijay

Câu trả lời:


3

Có một chương trình tên là Belvedere có thể thực hiện thủ thuật.

http://ca.lifehacker.com/341950/belvedere-automates-your-'m+cleaning-pc

Đây là một ứng dụng Windows độc lập chạy trong nền.

Tôi đã thiết lập nó để theo dõi thư mục tải xuống của mình đối với các tệp có phần mở rộng nhất định có ngày sửa đổi cuối cùng của một ngày cũ. Các tập tin nó tìm thấy, nó xóa, tuy nhiên bạn có thể để nó chạy một hành động thay thế.


Wow - cái đó trông siêu đẹp. Tôi sẽ chọn đây là câu trả lời (ngay cả khi tôi đã có thứ tôi cần từ người khác) vì nó có thể hữu ích và linh hoạt hơn nhiều so với cái tôi đang sử dụng, cho người khác (và có thể cả tôi trong tương lai!) . +1 và được chấp nhận!
Camilo Martin

2
Belvedere khiến tôi mất hàng giờ để cuối cùng tìm ra nó đầy lỗi chưa được giải quyết , đặc biệt là với các lệnh tùy chỉnh. Thay vào đó, hãy thử dùng FolderMonitor (và sử dụng "{0}{1}"trong trường tham số, bao gồm cả dấu ngoặc kép). Vấn đề duy nhất: bạn không thể xác định một lệnh riêng cho mỗi thư mục. Chỉ cần một, trên toàn cầu.
fregante

@ bfred.it Belvedere có vấn đề của nó, nhưng nó đã làm việc cho tôi. FolderMonitor trông giống như một giải pháp tốt. Tôi nghĩ đó là câu hỏi mà người dùng đặt câu hỏi đã kết thúc .
dangowans


7

Tôi đã tạo một tiện ích đơn giản cho mục đích này: https://github.com/benblamey/when_changed

cách sử dụng: when_changed (đường dẫn tệp) (lệnh) (tham số tùy chọn)

ví dụ: khi_changed C: \ somedir \ foo.txt thanh myapp.exe wibble 123


Tôi thích cách đó là một API thanh lịch. Nó có hỗ trợ các thư mục đệ quy không?
Camilo Martin

Có: when_changed C: \ **. Txt foo.exe Tôi muốn có phiên bản không có phụ thuộc của github.com/joh/when-changed cho windows.
Ben

6

Với .NET watchprinters, điều này thực sự dễ dàng để viết mã. Tôi chắc rằng ai đó đã thực hiện một chương trình như vậy.

Chỉ cần tìm thấy viên ngọc này cho bạn http://www.guidingtech.com/9861/automate-folder-ilities-windows-watch-4-folder/


Tôi nhận thức được việc viết mã này dễ dàng như thế nào trong .NET - Tôi chỉ không muốn. Nhưng tôi đang thử cái này miễn phí, có thể cũng hoạt động! +1 cho đề xuất, cái đó cũng có vẻ tốt.
Camilo Martin


2

Đây là một yêu cầu phổ biến đến nỗi tôi ngạc nhiên không có tiện ích tiện lợi nào được tích hợp trong hệ điều hành.

Dù sao như đã đề cập trước đó, tôi đã sử dụng LogMonitor thành công trong quá khứ. Tuy nhiên tôi thấy bài đăng trên blog này có nhiều thông tin và hiện đang sử dụng Thư mục Watch 4 .

Hy vọng điều này sẽ giúp bạn ra ngoài.


+1, nhưng tôi không nói đó là "yêu cầu chung" đối với bất kỳ ai trừ nhà phát triển chúng tôi ... Và đối với vấn đề đó, có các cuộc gọi hệ thống để giám sát hệ thống tập tin, do đó, nó được tính là "Tích hợp hệ điều hành" tôi đoán.
Camilo Martin

1
Vâng, tôi đã nhìn thấy nó từ quan điểm chia sẻ kinh doanh và mạng. Bạn luôn muốn biết ai sẽ đổ lỗi khi một tập tin bị mất: P. Tôi đang ở giữa chẩn đoán một tình huống như vậy ngay bây giờ: /
Vijay


2

Nếu bạn muốn thực hiện một giải pháp tích hợp bằng JScript hoặc VBScript, thì điều bạn muốn tìm là theo dõi hệ thống tệp bằng cách sử dụng đăng ký sự kiện WMI. Về cơ bản, bạn viết mã để theo dõi một thư mục và các hành động tạo khuôn khi phát hiện ra một thay đổi, chẳng hạn như:

  • __InstanceCreationEvent
  • __InstanceDeletionEvent
  • __InstanceModificationEvent

... Và kịch bản của bạn chạy trên một khoảng thời gian xem các sự kiện này xảy ra. Có nhiều tài nguyên, nhưng đây là một số cho VBScript và Powershell:


1

NirSoft có phần mềm để theo dõi các thay đổi tập tin trên Windows
FolderChangesView

FolderChangesView là một công cụ đơn giản theo dõi thư mục hoặc ổ đĩa mà bạn chọn và liệt kê mọi tên tệp đang được sửa đổi, tạo hoặc xóa trong khi thư mục đang được theo dõi. Bạn có thể sử dụng FolderChangesView với bất kỳ ổ đĩa cục bộ nào hoặc với chia sẻ mạng từ xa, miễn là bạn có quyền đọc thư mục đã chọn.

nhập mô tả hình ảnh ở đây

bạn có thể tải xuống miễn phí từ đây
Thông tin thêm


Có vẻ nhiều công cụ thông tin / gỡ lỗi hơn là một công cụ tự động hóa, nhưng vẫn thú vị.
Camilo Martin

0

Bạn có thể sử dụng http://jnotify.sourceforge.net/ để đăng ký các sự kiện giám sát hệ thống tập tin cụ thể của os. Mã này đã cũ nhưng vẫn hoạt động (ít nhất là trên Windows Server 2013r2 tôi đã thử nghiệm ngày hôm qua).

Ngoài ra còn có github phục hồi dự án jnotify trên https://github.com/redbooth/jnotify không cung cấp ứng dụng demo độc lập nhưng (theo nhật ký cam kết) vá một số lỗi.

Trong java7 cũng nên có một số loại hệ thống tập tin giống như inotify, nhưng tôi chưa thử nghiệm nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.