«Rm -rf» эквивалент для Windows?

Мне нужен способ рекурсивного удаления папки и ее дочерних элементов.

Есть ли готовый инструмент для этого, или мне нужно написать его?

DEL /S не удаляет каталоги.

DELTREE был удален из Windows 2000+

    RMDIR или RD, если вы используете classическую командную строку (cmd.exe):

     rd /s /q "path" 

    Если вы используете PowerShell, вы можете использовать Remove-Item (который является псевдонимом для del , erase , rd , ri , rm и rmdir ) и принимает аргумент -Recurse который можно закоротить на -r

     rd -r "path" 

    админ:

     takeown /r /f folder cacls folder /c /G "ADMINNAME":F /T rmdir /s folder 

    Работает для чего угодно, включая sys-файлы

    EDIT: Я действительно нашел лучший способ, который также решает проблему с файлом слишком долго:

     mkdir \empty robocopy /mir \empty folder 

    RMDIR [/S] [/Q] [drive:]path

    RD [/S] [/Q] [drive:]path

    • /S Удаляет все каталоги и файлы в указанном каталоге в дополнение к самому каталогу. Используется для удаления дерева каталогов.

    • /Q Тихий режим, не спрашивайте, нормально ли удалять дерево каталогов с помощью /S

    Вы можете установить cygwin, который имеет rm а также ls и т. Д.

    Перейдите к пути и вызовите эту команду.

     rd /s /q "FOLDER_NAME" 

    / s: Удаляет указанный каталог и все подкаталоги, включая любые файлы. Используйте / s для удаления дерева.

    / q: Запуск rmdir в тихом режиме. Удаляет каталоги без подтверждения.

    /? : Отображает справку в командной строке.

    rmdir /S /Q %DIRNAME%

    Для удаления каталога (независимо от того, существует он или нет) используйте следующее:

     if exist myfolder ( rmdir /s/q myfolder ) 

    Попробуйте эту команду:

     del /s foldername 

    rmdir / s dirname

    Вы можете установить GnuWin32 и использовать * nix-команды изначально на windowsх. Я устанавливаю это, прежде чем устанавливать что-либо еще на новую версию Windows. 🙂

    Вот что вам нужно сделать …

    Создайте пакетный файл со следующей строкой

    RMDIR /S %1

    Сохраните пакетный файл как Remove.bat и поместите его в C:\windows

    Создайте следующий раздел реестра

    HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)

    Запустите regedit и обновите значение по умолчанию HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)\default со следующим значением

    "c:\windows\REMOVE.bat" "%1"

    Это оно! Теперь вы можете щелкнуть правой кнопкой мыши любой каталог и использовать функцию RMDIR

    Во-первых, давайте рассмотрим, что делает 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 

    Существует три сценария, в которых обычно используется rm -rf , где ожидается возврат 0 :

    1. Указанный путь не существует.
    2. Указанный путь существует и является каталогом.
    3. Указанный путь существует и является файлом.

    Я проигнорирую все права, но никто не использует разрешения или не пытается в любом случае отказывать себе в доступе на запись в вещах в Windows (это значит, что это шутка …).

    Сначала установите ERRORLEVEL в 0, а затем удалите этот путь только в том случае, если он существует, используя разные команды в зависимости от того, является ли это каталогом. IF EXIST не устанавливает ERRORLEVEL в 0, если путь не существует, поэтому сначала необходимо установить ERRORLEVEL в 0, чтобы правильно определить успех таким образом, чтобы имитировать нормальное использование rm -rf . Охрана RD с использованием IF EXIST необходима, потому что RD , в отличие от rm -f , выдает ошибку, если цель не существует.

    Следующий fragment сценария предполагает, что DELPATH предзачитывается. (Это безопасно, когда вы делаете что-то вроде SET DELPATH=%1 Попробуйте положить ECHO %1 в .cmd и передать ему аргумент с пробелами в нем и посмотреть, что будет для вас). После завершения fragmentа, вы можете проверить наличие ошибки с 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% 

    Точка, все проще, когда среда просто соответствует POSIX. Или если вы установите минимальный MSYS и просто используйте это.

    Существует также deltree, если вы используете более старую версию Windows.

    Мне очень нравится этот сайт для поиска команд: SS64: Del – Удалить файлы

    вот что сработало для меня:

    Просто попробуйте уменьшить длину пути. ie: Переименовать все папки, которые ведут к такому файлу, к наименьшим возможным именам. Скажите одно письмо. Продолжайте переименование вверх в иерархии папок. Благодаря этому u эффективно уменьшает длину пути. Теперь, наконец, попробуйте удалить файл сразу.

    Это приведет к удалению «моей папки» и ее содержимого без подсказки:

     rd /s /q "C:\Users\jerry.g\AppData\Roaming\my folder" 

    Использование Powershell 5.1

      get-childitem *logs* -path .\ -directory -recurse | remove-item -confirm:$false -recurse -force 

    Замените журналы с именем каталога, которое вы хотите удалить.

    get-childitem ищет каталог для детей с рекурсивным именем из текущего пути (.).

    remove-item удаляет результат.

    del / s / q directorytobedeleted

    Interesting Posts

    Есть ли в Windows 8 Explorer столбец FolderSize (или восстановить API-интерфейс обработчика столбцов)?

    Поплавок справа и абсолютная позиция не работают вместе

    Использование указателя после free ()

    Как создать междоменный запрос?

    Класс C # для анализа WebRequestMethods.Ftp.ListDirectoryDetails FTP-ответ

    Что делает «useLegacyV2RuntimeActivationPolicy» в конфигурации .NET 4?

    Как отключить / сбросить пароль при включении на ноутбуке Toshiba Satellite C55DT-A5106

    Жесткий диск не работает?

    Как программно определить ориентацию интерфейса iPhone?

    Существуют ли какие-либо macros, чтобы определить, скомпилирован ли мой код для Windows?

    как я могу заставить TcpListener принимать несколько соединений и работать с каждым отдельно?

    Почему C # C ++ не имеет «стандартного стандарта ISO»?

    Лучший способ проверить, является ли Путь файлом или каталогом?

    Как вернуть пользовательский объект из запроса Spring JPA GROUP BY

    Как я могу заставить свои домашние машины подключаться друг к другу через имя хоста?

    Давайте будем гением компьютера.