Tạo một tệp bó để xóa tất cả các tệp và thư mục con trong một thư mục


0

Gần đây tôi đã cài đặt một NAS mới và đang cố gắng tạo thư mục 'Temp' như tôi đã có trước đây, về cơ bản là một thư mục được sử dụng để di chuyển các tệp trong giờ làm việc và sau đó bị xóa mỗi đêm.

Kiến thức của tôi về các tập tin hàng loạt là rất hạn chế. Tôi tìm thấy điều này trên một trang web khác nhưng không quản lý để làm cho nó hoạt động. Hy vọng ai đó có thể giải thích làm thế nào tôi có thể cải thiện điều này hoặc tại sao nó không hoạt động.

@echo off
rd "C:test" /F /Q

Chỉ để làm cho mọi thứ khó khăn hơn một chút, tôi có một thư mục con có tên 'Chia sẻ này bị xóa hàng ngày - Không lưu trữ các tệp quan trọng'.

Tôi đã tự hỏi nếu có thể xóa tất cả các tập tin và thư mục con của thư mục này nhưng vẫn giữ thư mục con có tên ở trên?

Bất kỳ trợ giúp sẽ được thực sự đánh giá cao.

James


Vui lòng xác nhận rằng thư mục bạn muốn xóa là testvà nó nằm trong thư mục gốc của ổ C. Ngoài ra, bạn đang sử dụng phiên bản Windows nào?
boot13

địa điểm kiểm tra là C: \ test. Có lẽ tôi đã không rõ ràng xin lỗi. Về cơ bản 2 thư mục. Kiểm tra xem bắt chước thư mục tạm thời tệp bó này có liên quan đến sau khi kiểm tra. Kiểm tra bên trong, chúng tôi có thư mục 'Chia sẻ này bị xóa hàng ngày - Không lưu trữ các thư mục quan trọng'. Cũng sẽ có các tệp / thư mục khác trong thư mục kiểm tra cấp cao nhất. Những gì tôi muốn làm là mỗi ngày vào lúc nửa đêm, xóa tất cả các tệp và thư mục khỏi bài kiểm tra. Chỉ để lại (Nếu có thể) Thư mục Không lưu trữ.
JGreen

Câu trả lời:


1

Đối với câu hỏi đầu tiên của bạn, tôi nghĩ rằng bạn muốn / S / Q không / F / Q, và ECHO OFFdòng không cần thiết, bạn chỉ có thể đặt trước lệnh với @ để ngăn không cho lệnh bị lặp lại:

@RD "C:test" /S /Q

Điều này sẽ xóa thư mục kiểm tra cũng như tất cả nội dung của nó. Nó hoạt động trên thư mục thử nghiệm tại vị trí C: hiện tại (theo ví dụ của bạn).

Nếu bạn muốn giữ thư mục 'test \ Chia sẻ này bị xóa hàng ngày - Không lưu trữ thư mục các tệp quan trọng' thì điều này sẽ hoạt động, tuy nhiên bạn phải cung cấp đường dẫn đầy đủ hai lần - Tôi đã sử dụng% USERPROFILE% tại đây):

FOR /F "usebackq delims==" %i IN (`dir /b /s "%USERPROFILE%\test"`) DO @IF "%~i" NEQ "%USERPROFILE%\test\This Share is Deleted Daily - Do Not Store Important Files" @DEL /S /Q "%i" 2>NUL

Tất nhiên bạn cần phải rất cẩn thận với các lệnh như thế này, có khả năng rất lớn để vô tình xóa sạch thứ gì đó hữu ích, hoặc quan trọng hoặc quan trọng .

Nếu bạn muốn thử bất cứ điều gì phức tạp hơn, tôi khuyên bạn nên suy nghĩ về việc cài đặt cygwin và sau đó viết một tập lệnh bash để đạt được mục tiêu của bạn. bash là tốt hơn nhiều so với lô!


Cảm ơn bạn đã trả lời nhanh chóng. Để đảm bảo tôi hiểu chính xác, dòng đầu tiên của - @RD "C: test" / S / Q - sẽ xóa tệp kiểm tra và mọi thứ bên dưới có đúng không? Câu trả lời thứ hai bạn đưa ra sẽ giữ cả bài kiểm tra và Chia sẻ này bị xóa thư mục hàng ngày nhưng xóa tất cả các thư mục và tệp khác bên dưới bài kiểm tra? Cảm ơn bạn một lần nữa vì đã phản hồi nhanh
JGreen
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.