Tôi cần một cách để đệ quy xóa một thư mục và con của nó.
Có một công cụ dựng sẵn cho việc này, hoặc tôi cần phải viết một công cụ?
DEL /S không xóa thư mục.
DELTREE đã bị xóa khỏi Windows 2000+
format c:cài đặt Linux sao? Tôi đang đùa tất nhiên.
Tôi cần một cách để đệ quy xóa một thư mục và con của nó.
Có một công cụ dựng sẵn cho việc này, hoặc tôi cần phải viết một công cụ?
DEL /S không xóa thư mục.
DELTREE đã bị xóa khỏi Windows 2000+
format c:cài đặt Linux sao? Tôi đang đùa tất nhiên.
Câu trả lời:
RMDIR hoặc RD nếu bạn đang sử dụng Dấu nhắc lệnh cổ điển (cmd.exe):
rd /s /q "path"
Đường dẫn RMDIR [/ S] [/ Q] [drive:]
Đường dẫn RD [/ S] [/ Q] [drive:]
/ S Xóa tất cả các thư mục và tệp trong thư mục được chỉ định ngoài thư mục đó. Được sử dụng để loại bỏ một cây thư mục.
/ Q Chế độ im lặng, không hỏi có ổn không khi xóa cây thư mục bằng / S
Nếu bạn đang sử dụng PowerShell, bạn có thể sử dụng Remove-Item(được lấy bí danh là del, erase, rd, ri, rmvà rmdir) và mất một -Recurselập luận cho rằng có thể thiếu để-r
rd -r "path"
rd /s /q foo && echo "yay"sẽ thất bại nếu thư mục "foo" không tồn tại.
Access is deniedvà những người khác The process cannot access the file because it is being used by another process?
quản trị viên:
takeown /r /f folder
cacls folder /c /G "ADMINNAME":F /T
rmdir /s folder
Hoạt động cho mọi thứ kể cả các tệp sys
EDIT: Tôi thực sự đã tìm ra cách tốt nhất cũng giải quyết vấn đề đường dẫn tệp quá dài:
mkdir \empty
robocopy /mir \empty folder
robocopy /mir c:\empty .
takeownđã giúp tôi khi tôi sao chép thư mục từ hệ thống Linux bằng rsync và tôi không có đặc quyền để xóa thư mục đó ... Ngay cả bản sao lưu cũng không hoạt động. Cảm ơn
RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path
/S Xóa tất cả các thư mục và tệp trong thư mục được chỉ định ngoài thư mục đó. Được sử dụng để loại bỏ một cây thư mục.
/Q Chế độ im lặng, đừng hỏi có ổn không khi xóa cây thư mục với /S
Bạn có thể cài đặt cygwin, có rmcũng như lsvv
Đi đến đường dẫn và kích hoạt lệnh này.
rd /s /q "FOLDER_NAME"
/ s: Xóa thư mục được chỉ định và tất cả các thư mục con bao gồm mọi tệp. Sử dụng / s để loại bỏ một cây.
/ q: Chạy rmdir ở chế độ im lặng. Xóa các thư mục mà không cần xác nhận.
/? : Hiển thị trợ giúp tại dấu nhắc lệnh.
Câu trả lời được chấp nhận là rất tốt, nhưng giả sử bạn đã cài đặt Node, bạn có thể thực hiện việc này chính xác hơn nhiều với thư viện nút "rimraf", cho phép tạo các mẫu hình cầu. Nếu bạn sử dụng nó rất nhiều (tôi làm), chỉ cần cài đặt nó trên toàn cầu.
yarn global add rimraf
sau đó, ví dụ, một mẫu tôi sử dụng liên tục:
rimraf .\**\node_modules
hoặc cho một lớp lót cho phép bạn tránh cài đặt toàn cầu, nhưng sẽ mất một chút thời gian để tải xuống gói động:
npx rimraf .\**\node_modules
Hãy thử lệnh này:
del /s foldername
Trước tiên, hãy xem lại những gì rm -rf:
C:\Users\ohnob\things>touch stuff.txt
C:\Users\ohnob\things>rm -rf stuff.txt
C:\Users\ohnob\things>mkdir stuff.txt
C:\Users\ohnob\things>rm -rf stuff.txt
C:\Users\ohnob\things>ls -l
total 0
C:\Users\ohnob\things>rm -rf stuff.txt
Có ba kịch bản rm -rfthường được sử dụng ở nơi dự kiến sẽ trả về 0:
Tôi sẽ bỏ qua toàn bộ điều quyền, nhưng không ai sử dụng quyền hoặc cố gắng từ chối chính họ viết quyền truy cập vào mọi thứ trong Windows (OK, điều đó có nghĩa là một trò đùa đùa).
Đầu tiên được đặt ERRORLEVELthành 0 và sau đó xóa đường dẫn chỉ khi nó tồn tại, sử dụng các lệnh khác nhau tùy thuộc vào việc nó có phải là một thư mục hay không. IF EXISTkhông được đặt ERRORLEVELthành 0 nếu đường dẫn không tồn tại, do đó, đặt ERRORLEVELthành 0 trước là cần thiết để phát hiện đúng thành công theo cách bắt chước rm -rfsử dụng bình thường . Bảo vệ RDvới IF EXISTlà cần thiết bởi vì RD, không giống như rm -f, sẽ gây ra lỗi nếu mục tiêu không tồn tại.
Đoạn mã sau đây giả định rằng DELPATH được đặt trước. (Điều này an toàn khi bạn làm một cái gì đó như SET DELPATH=%1. Hãy thử đưa ECHO %1vào .cmdvà chuyển cho nó một đối số có khoảng trắng trong đó và xem điều gì xảy ra cho chính bạn). Sau khi đoạn mã hoàn thành, bạn có thể kiểm tra lỗi IF ERRORLEVEL 1.
: # Determine whether we need to invoke DEL or RD or do nothing.
SET DELPATH_DELMETHOD=RD
PUSHD %DELPATH% 2>NUL
IF ERRORLEVEL 1 (SET DELPATH_DELMETHOD=DEL) ELSE (POPD)
IF NOT EXIST %DELPATH% SET DELPATH_DELMETHOD=NOOP
: # Reset ERRORLEVEL so that the last command which
: # otherwise set it does not cause us to falsely detect
: # failure.
CMD /C EXIT 0
IF %DELPATH_DELMETHOD%==DEL DEL /Q %DELPATH%
IF %DELPATH_DELMETHOD%==RD RD /S /Q %DELPATH%
Điểm là, mọi thứ đơn giản hơn khi môi trường chỉ phù hợp với POSIX. Hoặc nếu bạn cài đặt một MSYS tối thiểu và chỉ cần sử dụng nó.
qua Powershell
Remove-Item -Recurse -Force "TestDirectory"
thông qua Dấu nhắc lệnh
Dưới đây là những gì bạn cần làm...
Tạo một tệp bó với dòng sau
RMDIR /S %1
Lưu tập tin lô của bạn như Remove.batvà đặt nó vàoC:\windows
Tạo khoá đăng ký sau
HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)
Khởi chạy regeditvà cập nhật giá trị mặc định HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)\default
với giá trị sau
"c:\windows\REMOVE.bat" "%1"
Đó là nó! Bây giờ bạn có thể nhấp chuột phải vào bất kỳ thư mục nào và sử dụng chức năng RMDIR
SỬ DỤNG CÓ NGUY CƠ CỦA RIÊNG BẠN. THÔNG TIN CUNG CẤP 'NHƯ VẬY'. KHÔNG KIỂM TRA TUYỆT VỜI.
Nhấp chuột phải vào biểu tượng Windows (thường ở dưới cùng bên trái)> nhấp vào "Windows PowerShell (Quản trị viên)"> sử dụng lệnh này (cẩn thận, bạn có thể dễ dàng xóa tất cả các tệp của mình nếu không cẩn thận):
rd -r -include *.* -force somedir
Thư somedirmục không trống bạn muốn xóa ở đâu.
Lưu ý rằng với các đĩa đính kèm bên ngoài hoặc các đĩa có vấn đề, đôi khi Windows hoạt động kỳ quặc - nó không có lỗi trong việc xóa (hoặc bất kỳ nỗ lực sao chép nào), nhưng thư mục không bị xóa (hoặc không được sao chép) theo hướng dẫn. (Tôi thấy rằng trong trường hợp này, ít nhất là đối với tôi, lệnh do @n_y đưa ra trong câu trả lời của anh ta sẽ tạo ra các lỗi như 'get-childitem: Tệp hoặc thư mục bị hỏng và không thể đọc được.' Kết quả là trong PowerShell)
LATE NHƯNG TRẢ LỜI QUAN TRỌNG cho bất cứ ai gặp khó khăn khi cài đặt các gói npm trên máy windows và nếu bạn thấy lỗi rm -rf..."không tìm thấy lệnh". Bạn có thể sử dụng bash cli để chạy lệnh rm trên windows.
Đối với người dùng npm, bạn có thể thay đổi cấu hình của npm npm config set script-shell "C:\Program Files\Git\bin\bash.exe"theo cách này nếu gói npm bạn đang cố cài đặt có tập lệnh cài đặt bài đăng sử dụng rm -rflệnh, bạn sẽ có thể chạy rmlệnh đó mà không cần thay đổi bất cứ điều gì trong gói npm hoặc vô hiệu hóa bài viết cài đặt script config. (Ví dụ: styled-componentssử dụng rmlệnh trong tập lệnh cài đặt bài đăng của họ)
Nếu bạn muốn chỉ sử dụng rm lệnh, bạn có thể dễ dàng sử dụng bash và truyền các đối số.
Vì vậy, có, bạn có thể sử dụng lệnh 'rm' trên windows.
đây là những gì làm việc cho tôi:
Chỉ cần thử giảm độ dài của đường dẫn. tức là :: Đổi tên tất cả các thư mục dẫn đến một tệp như vậy thành các tên nhỏ nhất có thể. Nói một chữ cái tên. Tiếp tục đổi tên lên trên trong hệ thống phân cấp thư mục. Bằng cách này, u có hiệu quả giảm chiều dài đường dẫn. Bây giờ cuối cùng hãy thử xóa tập tin ngay lập tức.
Ngoài ra còn có deltree nếu bạn đang dùng phiên bản windows cũ hơn.
Tôi thực sự thích trang này để tìm lệnh: SS64: Del - Xóa tệp