Tìm kiếm tệp sau một ngày tương đối bằng cách sử dụng tìm kiếm Windows


8

Tôi đang tìm cách lưu một tìm kiếm bao gồm một ngày tương đối. Cụ thể, tôi đang tìm cách lưu một tìm kiếm khớp với các tệp có ngày sửa đổi là 7 ngày trước .

Tôi đã đọc tài liệu Cú pháp Truy vấn Nâng cao của Windows Search và tôi không thấy cách nào để nói 7 ngày trước.

Phần số và phạm vi đề cập rằng ngày tương đối là có thể. Vấn đề là ngày tương đối được mô tả ở đó không phù hợp với tiêu chí tôi cần. Cuối tuần gần giống như những gì tôi muốn ngoại trừ nếu tôi chạy một truy vấn như after:lastweekvào thứ Hai, nó sẽ chỉ hiển thị tệp của tôi đã được sửa đổi kể từ Chủ nhật lúc 12:00. Cuối tuần / tháng cuối dường như liên quan đến đầu tuần / tháng không phải là thứ tôi cần.

Ngày tương đối nhiều từ: tuần, tháng tiếp theo, tuần trước, tháng trước hoặc năm tới. Các giá trị cũng có thể được ký hợp đồng, như sau: tuần này, tháng tới, cuối tuần, tháng trước, sắp tới.

Một điều thú vị về các tìm kiếm đã lưu là chúng được lưu trữ dưới dạng tài liệu XML và định dạng tệp được ghi lại . Tôi không thấy làm thế nào để hình thành một giá trị chính xác cho một datetime. Nếu tôi có thể hiểu định dạng này, tôi nghi ngờ tôi có thể sử dụng trình soạn thảo văn bản và tạo một tìm kiếm đã lưu, thực hiện những gì tôi muốn.

Đoạn từ các ví dụ :

<conditions>
  <condition type="leafCondition" valuetype="System.StructuredQueryType.DateTime"
             property="System.DateModified" operator="imp" 
             value="R00UUUUUUUUZZXD-30NU" propertyType="wstr" />
</conditions>

Để tóm tắt, tôi đang tìm câu trả lời cho một hoặc cả hai câu hỏi này

  • Làm cách nào để tạo một truy vấn cho '7 ngày trước' bằng cú pháp tiêu chuẩn?
  • DateTime được lưu trữ trong một tìm kiếm đã lưu như thế nào?

Câu trả lời:


7

Đối với phần đầu tiên của câu hỏi của bạn: R00UUUUUUUUZZXD-30NUyêu cầu Windows tìm kiếm trong 30 ngày qua. Thay đổi 30 thành 1 (nghĩa là R00UUUUUUUUZZXD-1NU) sẽ khiến nó tìm kiếm trong 24 giờ qua.

Trong trường hợp của bạn, bạn đang tìm cách đặt giá trị thành R00UUUUUUUUZZXD-7NU. Tham khảo bài viết diễn đàn này . 🕗

Đối với phần thứ hai của câu hỏi của bạn có lẽ bắt đầu bằng cách xem System.DateModifiedtài liệu. Một loại khác được đề cập System.StructuredQueryType.DateTime, tôi không thể tìm thấy tài liệu trên.

Cập nhật:

Tôi thấy điều này ngọc 🕗 rằng chúng ta gần gũi hơn với giải mã thế nào để xây dựng tương đối DateTimegiá trị. Hãy xem xét trích dẫn này:

Ví dụ: Truy vấn có cấu trúc hỗ trợ các biểu thức ngày / thời gian tương đối, vẫn chưa được giải quyết cho đến khi chúng được áp dụng cho một số thời gian tham chiếu. Trong một nút lá có kiểu ngữ nghĩa System.StstalluredQueryType.DateTime, giá trị có thể là VT_FILETIME hoặc VT_LPWSTR. VT_FILETIME là một ngày / thời gian tuyệt đối vì vậy nó đã được giải quyết. VT_LPWSTR là biểu diễn chuỗi của biểu thức ngày / thời gian tương đối. Thời gian tham chiếu đã chỉ định phải là giờ địa phương, nhưng thời gian được giải quyết trong biểu thức truy vấn kết quả sẽ ở thời gian quốc tế phối hợp (UTC).

và cuối cùng bài đăng diễn đàn này có một ví dụ khác về những gì DateTimeđược lưu trữ.

Điều tốt nhất tôi có thể nói với nó là một định dạng ngày / giờ tương đối. Tôi vẫn không thể tìm thấy bất kỳ tài liệu cứng về nó.


+1. Rất tốt công việc khai thác ý nghĩa của "R00UUUUUUUUZZX-30NU".
Peter Mortensen

1

Chỉ cần viết một tập lệnh (PowerShell hoặc Batch) mất ngày hôm nay, trừ 7 ngày và thực hiện tìm kiếm dựa trên kết quả. Bằng cách đó, bạn sẽ không phải lưu tìm kiếm, chỉ cần chạy tập lệnh.


Trong khi tôi đồng ý đây là có thể làm việc xung quanh. Đây thực sự không phải là giải pháp tôi đang tìm kiếm. Thêm vào đó, ai đó nên biết giá trị datetime được cấu trúc như thế nào.
Zoredache

0

Tôi đã tạo một tệp tìm kiếm mẫu để tạo lại theo chương trình. Tôi đã tìm kiếm các tập tin video trong một thư mục được chỉ định, được sửa đổi trong 2 tuần qua ("dHRodified: 3/17 / 2017..4 / 1/2017").

Điều này đã cho tôi một tệp .search-ms đầy đủ những thứ như:

<condition type="leafCondition" property="System.DateModified" operator="imp" propertyType="stringarray" value="N00K2017K3K17UUUUUZZNNU; N00K2017K4K1UUUUUZZNNU" valuetype="System.StructuredQueryType.DateTime" localeName="en-US">

Chìa khóa ở đây là

giá trị = "N00K 2017 K 3 K 17 UUUUUZZNNU; N00K 2017 K 4 K 1 UUUUUZZNNU"

Bạn có thể nhận thấy ngày tháng được viết rõ ràng, được viết sẵn bằng chữ K N00 rồi K, sau đó là năm, v.v.

N00 K[year]K[month]K[day]UUUUUZZNNU

Tôi đã viết một ứng dụng bảng điều khiển đơn giản để tạo tệp tìm kiếm với các ngày cụ thể trong vòng 2 tuần qua và thiết lập Trình lập lịch tác vụ Windows để chạy nó mỗi ngày vào lúc nửa đêm cho mục đích riêng của tôi. Tôi chắc rằng bạn có thể làm như vậy.

Tôi đồng ý phương pháp giải pháp thay thế cho việc có thể tạo tệp tìm kiếm. Một điều mọi người có thể không biết là bạn có thể coi các tệp .search-ms là các thư mục, thậm chí sẽ đi xa đến mức bao gồm chúng như một thư mục thanh công cụ trên thanh tác vụ của bạ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.