PowerShell: Cách bỏ qua các tệp không thể truy cập được
Đôi khi trong PowerShell, bạn có thể nhận được thông báo lỗi cho bạn biết không thể truy cập được một tệp cụ thể vì tệp này hiện đang được một quy trình khác sử dụng.
Cách dễ nhất để ngăn chặn lỗi này là sử dụng -ErrorAction SilentlyContinue để yêu cầu PowerShell âm thầm tiếp tục tác vụ mà không hiển thị lỗi.
Đây là một cách phổ biến để sử dụng cú pháp này trong thực tế:
Remove-Item "C:\my\path\*" -Recurse -Force -ErrorAction SilentlyContinue
Ví dụ cụ thể này sẽ xóa tất cả các tệp trong đường dẫn mà chúng tôi đã chỉ định. Nếu bất kỳ tệp nào hiện đang được sử dụng thì PowerShell sẽ chỉ bỏ qua các tệp này mà không hiển thị thông báo lỗi.
Ví dụ sau đây cho thấy cách sử dụng cú pháp này trong thực tế.
Ví dụ: Cách bỏ qua các tệp không thể truy cập được trong PowerShell
Giả sử thư mục hiện tại của chúng ta có đường dẫn sau:
C:\Users\bobbi\data1Chúng ta có thể sử dụng lệnh ghép ngắn Get-ChildItem để xem tất cả các tệp và thư mục trong thư mục này:
Chúng ta có thể thấy rằng có ba tệp trong thư mục này:
- khu vực.txt
- danh sách.csv
- lịch trình.csv
Giả sử chúng ta muốn xóa tất cả các tệp trong thư mục này nhưng giả sử rằng tệp schedules.csv hiện đang mở và đang được sử dụng trên máy tính của chúng ta.
Giả sử chúng ta cố gắng sử dụng lệnh ghép ngắn Remove-Item với cú pháp sau để xóa từng tệp trong thư mục:
Remove-Item "C:\Users\bobbi\data1\*" -Recurse -ForceẢnh chụp màn hình sau đây cho thấy cách sử dụng cú pháp này trong thực tế:
Chúng tôi nhận được thông báo lỗi cho chúng tôi biết schedules.csv không thể truy cập được vì nó đang được một quy trình khác sử dụng.
Để bỏ qua file này khi xóa tất cả các file trong thư mục hiện tại, chúng ta có thể thêm lệnh -ErrorAction SilentlyContinue như sau:
Remove-Item "C:\Users\bobbi\data1\*" -Recurse -Force -ErrorAction SilentlyContinue
Ảnh chụp màn hình sau đây cho thấy cách sử dụng cú pháp này trong thực tế:
Lưu ý rằng khi chạy lại lệnh ghép ngắn Get-ChildItem, chúng tôi có thể thấy rằng tất cả các tệp ngoại trừ schedules.csv đã bị xóa và lần này chúng tôi không nhận được bất kỳ thông báo lỗi nào.
Lưu ý: Bạn có thể tìm thấy tài liệu đầy đủ về -ErrorAction trong PowerShell tại đây.


