2013-01-17 15:33:22 +0000 2013-01-17 15:33:22 +0000
59
59

Полностью удалите папку в Windows с помощью командной строки

Мне нужно удалить одну папку, содержащую другие папки и файлы внутри. Я пробовал команды del и rmdir, но иногда они терпят неудачу с некоторыми строками ошибок: [PATH]: The directory isn't empty.

Есть ли хорошая альтернатива?

Ответы (8)

58
58
58
2013-01-17 15:38:19 +0000

Попробуйте:

rmdir /S your_directory

или:

rmdir /S /Q your_directory

пропустить сообщения с подтверждением.

16
16
16
2013-07-16 16:23:26 +0000

Это часто случается со мной с моими автоматизированными скриптами сборки.

Я думаю, что причиной может быть какое-то приложение, которое имеет открытый файл в этом каталоге с “share delete”. Т.е. приложение позволяет удалить файл (вот почему я думаю, что вызов DeleteFile не даст сбой), но файл исчезнет только после того, как указанное приложение закроет свой хэндл.

Это означает, что файл может все еще быть там, когда команда rmdir пытается удалить папку, отсюда и сообщение об ошибке. Вскоре после этого, указанное приложение закроет свой handle, файл исчезнет, и когда вы осмотрите папку, чтобы увидеть, какой файл rmdir говорил о ней, будет пустым.

По крайней мере, это моя теория.

Обходной путь, предложенный Harry Johnston, выглядит неплохо. Только я бы вставил паузу между командами rmdir. Конечно, Windows не имеет легко писать “паузу” команды (исправление: старые версии Windows не, более новые есть - см. комментарии). Но если секунд гранулярности достаточно, можно использовать ping для создания паузы:

ping -n {desired_delay_in_seconds + 1} 127.0.0.1 >nul

Так что в общей сложности:

rd /s /q foo
:: retry once
if exist foo (
    :: clear errorlevel
    cmd /c
    :: pause
    ping -n 2 127.0.0.1 >nul
    :: retry
    rd /s /q foo
)
:: retry yet again
if exist foo (
    cmd /c
    ping -n 2 127.0.0.1 >nul
    rd /s /q foo
)
:: give up
if exist foo {panic}
11
11
11
2013-01-17 16:27:07 +0000

У вас могут быть некоторые файлы только для чтения, вы можете использовать опцию del /F, чтобы избавиться от них с помощью

del /S /F your_directory
     rmdir your_directory

Вы также можете иметь некоторые скрытые файлы, и если вы действительно уверены, что хотите удалить их, то вы можете сделать это с помощью

del /S /F /AH your_directory
     rmdir your_directory

Если это все еще не удается, то либо у вас нет разрешения на удаление некоторых файлов, либо некоторые из файлов все еще используются.

5
5
5
2013-01-17 22:34:36 +0000

Я считаю, что в Windows 7 (и, возможно, в других версиях) есть ошибка, которая иногда вызывает этот симптом; или это может быть ошибка в стороннем программном обеспечении. (У вас случайно не установлена Symantec Endpoint Protection?)

В любом случае, я довольно часто сталкивался с ней. В большинстве случаев, проблему можно решить, запустив rd /s /q два или три раза подряд.

Если это в пакетном файле, вы можете сделать что-то вроде этого:

rd /s /q foo
if exist foo rd /s /q foo
if exist foo rd /s /q foo
if exist foo echo Help! & pause
3
3
3
2013-01-17 15:36:33 +0000

Используйте del на файлах внутри, затем rmdir для удаления папки.

Чтобы использовать метод rmdir для удаления всех файлов, также используйте ключ /S before имя папки, и /Q для подавления запроса на удаление. Это лучший способ сделать это, так как вы не пропустите ни одного файла. Будьте осторожны с использованием ключа /Q, так как он не предупредит вас о системных или скрытых атрибутах файла

2
2
2
2017-12-01 18:08:45 +0000

Если вы используете node , вы можете использовать зависимость rimraf следующим образом:

Пробег install: npm install rimraf -g

Удаленная папка: rimraf SourceFolder

Это помогло мне при получении ошибки:

имена исходных файлов больше, чем поддерживается файловой системой

0
0
0
2015-11-16 14:47:29 +0000

Я думаю, ты можешь использовать его вот так:

msg*your file is going to delete 
pause
del/s /q "C:\Users\Rd\Desktop\New folder (2)\" 
rmdir /s /q "C:\Users\Rd\Desktop\New folder (2)\"
mkdir "C:\Users\Rd\Desktop\New folder (2)"
0
0
0
2016-06-24 18:30:12 +0000

Папка старых версий Windows (DOS, Windows 95/98/ME), DELTREE эквивалентна RM или RMDIR. Я использую DELTREE на моей рабочей станции Windows 7 в пакетных файлах просто отлично.

Deletes a directory and all the subdirectories and files in it.

To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]

  /Y Suppresses prompting to confirm you want to delete
                  the subdirectory.
  [drive:]path Specifies the name of the directory you want to delete.

Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.

Похожие вопросы

3
19
10
28
3