Làm cách nào để sử dụng mã Powershell để lặp qua các thư mục con và xóa các thư mục cụ thể?


1

Nếu tôi đang ở trong thư mục làm việc hiện tại của mình, có mã powershell mà tôi có thể chạy sẽ lặp qua các thư mục con và xóa tất cả các thư mục có tên 400eV, 410eV, 420eV ... lên đến 500eV không?

Cụ thể, tôi đang trong thư mục làm việc hiện tại của tôi. Trong thư mục này, tôi có 24 thư mục, Angle1, Angle2, v.v ... lên đến Angle24

Trong mỗi thư mục này, tôi muốn xóa 11 thư mục có tên 400eV, 410eV, v.v. lên đến 500eV.

Câu trả lời:


3

Tôi không thích quá nhiều câu hỏi loại "cho tôi mã" nhưng đây là gợi ý về những gì bạn có thể làm:

$regularExpression = "(4[1-9][0-9]|500)eV$"

ls -rec -direc | ? {$_.fullname -match $regularExpression} | % { rm $_.fullname -force -recu -ErrorAction SilentlyContinue}

CHỈNH SỬA: nếu bạn có một quyền hạn cũ

ls -rec| ? {$_.PSIsContainer} | ? {[Regex]::IsMatch($_.fullname, $regularExpression)} | % { rm $_.fullname -force -recu -ErrorAction SilentlyContinue}


Phần biểu thức chính quy có nên chứa tất cả tên của các thư mục tôi muốn xóa không?
Jackson Hart

Không, ý tưởng của biểu thức chính quy là có một chuỗi đại diện cho một chuỗi các chuỗi theo cách rất súc tích. Trong trường hợp này, bạn cần [NumbersFrom400To500] được nối với chuỗi [eV], kiểm tra liên kết này để biết thêm liên kết
mjsr

Tôi đã sửa đổi câu trả lời, có bạn có biểu hiện thường xuyên của bạn. Là một lưu ý phụ hãy cẩn thận với -force -recurse thông số. Nếu tên thư mục khớp với biểu thức chính quy sẽ xóa đệ quy từ điểm đó trở đi. Sử dụng nó một cách rộng rãi.
mjsr

Khi tôi chạy lệnh, nó sẽ hiển thị & gt; & gt;
Jackson Hart

1
Tôi cập nhật câu hỏi của tôi để rõ ràng hơn. Có lẽ tuyên bố ban đầu của tôi không rõ ràng. Vâng, tôi có một bản sao lưu. Tôi sẽ không bao giờ chạy các lệnh như thế này mà không có bản sao lưu
Jackson Hart
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.