Tự động trả lời có cho forfiles


4

Tôi đang tìm cách tự động xóa các tập tin cũ hơn 7 ngày tuổi forfiles.

Mã dưới đây hoạt động khi tôi làm thủ công và trả lời có để xóa các tệp. Làm thế nào tôi có thể kết hợp cái có vào cái này?

Đây là đầu ra:

E:\>forfiles -p "H:\SHARED\Scans" -s -m *.* -d -7 -c "cmd /c del @path"
Could Not Find H:\SHARED\Scans\.DS_Store
H:\SHARED\Scans\XXX\DOC006.XSM\*, Are you sure (Y/N)?

1
Điều gì xảy ra khi bạn thử echo y | trước nó?
barlop

Lưu ý rằng trái ngược với những gì MS tài liệu nói, /m *.*trong forfileskhông phù hợp với tất cả các file. Nó sẽ chỉ khớp với các tệp có tên có phần mở rộng. Nếu bạn muốn khớp tất cả các tập tin, bạn cần /m *. Hoặc chỉ bỏ qua /mhoàn toàn, vì /m *là mặc định.
AnT

Câu trả lời:


5

Bạn có thể thử thêm vào / Q / S, mặc dù lưu ý rằng điều này thực tế có thể không làm những gì bạn thực sự muốn nó:

/Q Quiet mode, do not ask if ok to delete on global wildcard
/S Delete specified files from all subdirectories

E:\forfiles -p "H:\SHARED\Scans" -s -m . -d -7 -c "cmd /c del /Q /S @path"

Có lẽ bạn nên sử dụng CSCRIPT (với VBScript hoặc JScript) hoặc PowerShell. Kiểm tra câu trả lời này từ StackOverflow: https://stackoverflow.com/questions/1575493/how-to-delete-empty-subprinters-with-powershell

Dưới đây là một số vbscript để hoàn thành một nhiệm vụ tương tự:

Dim fso, folder, folders
Set fso = CreateObject("Scripting.FileSystemObject")
Set parent = fso.GetFolder("H:\SHARED\Scans")
Set folders = parent.SubFolders

' delete any folder older than 7 days
For Each folder in folders
    If Abs(DateDiff("d",Date, folder.DateCreated)) > 7 Then
        folder.Delete(True) 'force delete
    End If
Next

Có thể muốn thử H:\SHARED\Scans\ có vẻ như .DS_STOREđang được thêm vào thư mục hiện tại @PHLiGHT
Sathyajith Bhat

0

Ví dụ này xóa tất cả các tệp trong thư mục "G: \ db_bk_copies" cũ hơn 3 ngày mà không yêu cầu người dùng xác nhận xóa (Bạn có chắc chắn (Y / N) không?):

forfiles -p "G:\db_bk_copies" -s -m * /D -3 /C "cmd /c del /a-s @path"


-1

Xác minh rằng các tệp không phải là tệp ẩn hoặc hệ thống.

Nếu hệ thống thử:

forfiles -p "H:\SHARED\Scans" -s -m *.* -d -7 -c "cmd /c del /a-s @path"

Nếu ẩn Hãy thử:

forfiles -p "H:\SHARED\Scans" -s -m *.* -d -7 -c "cmd /c del /a-h @path"

Xin vui lòng đọc lại câu hỏi một cách cẩn thận. Câu trả lời của bạn không trả lời câu hỏi ban đầu.
DavidPostill
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.