Windows Vista đường ống dẫn đầu ra vào lệnh attrib


0

Tôi đã có vi-rút hoặc thứ gì đó trên máy tính của mình, đặt các thuộc tính cho tất cả các thư mục trong thư mục gốc của ổ đĩa ngoài của tôi thành hệ thống và bị ẩn và tạo các phím tắt cho chúng. Bây giờ tôi đang cố gắng loại bỏ tất cả các thuộc tính này cùng một lúc bằng lệnh sau, nhưng nó không làm gì cả:

dir /ash /b | attrib -h -s

Theo sự hiểu biết của tôi về tài liệu của các lệnh này, điều này sẽ hoạt động. Có điều gì sai ở đây?

Cảm ơn

Câu trả lời:


1

Đúng. Đường ống |chuyển hướng đầu ra của chương trình 1 sang đầu vào của chương trình 2. Tuy nhiên, chương trình 2 ( attrib) của bạn, không đọc bất kỳ đầu vào nào . Nó không được viết để làm như vậy. Thay vào đó, nó mong đợi tên tệp trong các tham số dòng lệnh của nó.


Có một số công cụ có sẵn trong các hệ thống kiểu Unix để xử lý các đường dẫn của các đối số, mặc dù có rất ít sự liên quan ở đây.

  • xargs để xử lý các trường hợp chuyển đổi văn bản đầu vào thành đối số dòng lệnh
  • find để xử lý trường hợp cụ thể này của việc áp dụng một lệnh đệ quy
  • chmod lệnh có tùy chọn đệ quy chế độ

Trên Windows, không có xargs, bạn sẽ phải làm một cái gì đó như:

for /f "tokens=*" %f in ('dir/b/ash') do @attrib -r -h -s "%~f"

Hoặc có thể:

for /r . %f in (*) do @attrib -r -h -s "%~f"

Thật là một cách làm việc vòng vo! attrib hỗ trợ đệ quy nguyên bản, xem câu trả lời của keltari.
Karan

Cảm ơn đã giải thích lý do tại sao nó không hoạt động. Tôi se thử lơi gợi y của bạn. Mặt khác, tôi cũng có thể sử dụng máy linux của mình để làm việc này, mặc dù tôi không chắc chắn chính xác các thuộc tính windows sẽ chuyển sang môi trường linux như thế nào, ví dụ, điều đặc biệt này không phải là vấn đề khi tôi chỉ kết nối ổ đĩa vào máy linux của tôi (vì .filename được sử dụng cho các thư mục ẩn trong unix)
Merwe

1

Trên thực tế bạn có thể làm điều đó một cách dễ dàng hơn nhiều:

attrib e:\*.* -s -h /s

Điều này sẽ loại bỏ tất cả các hệ thống và các thuộc tính ẩn bắt đầu từ thư mục gốc của E:ổ đĩa và tất cả các thư mục con của nó. Các /sTell attribđể xử lý các thư mục con.


Cũng có thể thêm /dnếu các thư mục đã bị ảnh hưởng là tốt.
Karan

Tôi cũng đã xem xét tùy chọn này, nhưng chỉ các thư mục bị ảnh hưởng và chỉ trong thư mục gốc của ổ đĩa. Tôi cho rằng nó không thể làm hại được gì theo cách này, ngoài việc thay đổi các thuộc tính cho các tệp cần được ẩn và hệ thống. Tôi cũng có thể sử dụng lệnh attrib trên các thư mục riêng lẻ, nhưng tất nhiên sẽ mất nhiều thời gian. Tôi đã thất vọng vì nó không hoạt động mặc dù tôi nghĩ rằng nó nên.
Merwe
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.