Мне нужно удалить одну папку, содержащую другие папки и файлы внутри. Я пробовал del
и rmdir
команды, но иногда они терпят неудачу с некоторыми ошибками:[PATH]: The directory isn't empty.
Есть ли хорошая альтернатива?
windows
command-line
Франческо Занини
источник
источник
Ответы:
Это часто случается со мной с моими автоматическими сценариями сборки.
Я предполагаю, что причиной может быть какое-то приложение, у которого в этом каталоге открыт файл с «удалением общего ресурса». Т.е. приложение позволяет удалить файл (именно поэтому я считаю, что вызов DeleteFile не завершится ошибкой), но файл исчезнет только после того, как указанное приложение закроет свой дескриптор.
Это означает, что файл все еще может быть там, когда
rmdir
команда пытается удалить папку, поэтому появляется сообщение об ошибке. Вскоре после этого указанное приложение закроет свой дескриптор, файл исчезнет, и когда вы осмотрите папку, чтобы увидеть, о каком файлеrmdir
идет речь, он будет пустым.По крайней мере, это моя теория.
Обход, предложенный Гарри Джонстоном, выглядит хорошо. Только я бы вставил паузу между
rmdir
командами. Конечно, в Windows нет легко выполняемой команды «пауза» (исправление: в старых версиях Windows этого нет, в более новых версиях - см. Комментарии). Но если секундной детализации достаточно, можноping
создать паузу:Итак, всего:
источник
rm -rf /directory/
должен быть глобальным во всех операционных системах.timeout /t 3
pause
команды).Пытаться:
или же:
пропустить подтверждающие сообщения.
источник
del
иrmdir
ничего не спрашивает, они просто отправляют несколько строк, как в описании.rmdir /s
удалит все, что можно удалить. У вас могут быть файлы, заблокированные программой, файлы только для чтения или файлы, для удаления которых вам необходим административный доступ. Нет ни одной команды, которая бы позаботилась обо всех этих ситуациях для васУ вас могут быть некоторые файлы только для чтения, вы можете использовать опцию del / F, чтобы избавиться от них, используя
Вы также можете иметь некоторые скрытые файлы, и если вы действительно уверены, что хотите удалить их, то вы можете сделать это, используя
Если это по-прежнему не удается, либо у вас нет разрешения на удаление некоторых файлов, либо некоторые файлы все еще используются.
источник
Я считаю, что есть ошибка в Windows 7 (и, возможно, в других версиях), которая иногда вызывает этот симптом; или это может быть ошибка в стороннем программном обеспечении. (У вас случайно установлен Symantec Endpoint Protection?)
Во всяком случае, я сталкивался с этим довольно часто. В большинстве случаев проблему можно обойти, выполнив
rd /s /q
два или три раза подряд.Если это в командном файле, вы можете сделать что-то вроде этого:
источник
Используйте
del
на файлы внутри, а затем,rmdir
чтобы удалить папку.Чтобы использовать этот
rmdir
метод для удаления всех файлов, используйте/S
переключатель перед именем каталога и/Q
подавьте запрос на удаление. Это лучший способ сделать это, так как вы не пропустите ни одного файла. Будьте осторожны, используя ключ / Q, поскольку он не предупредит вас о системных или скрытых атрибутах файла.источник
Если вы используете узел, вы можете использовать зависимость rimraf следующим образом:
запустить установку:
npm install rimraf -g
удалить папку:
rimraf SourceFolder
Это помогло мне при получении ошибки:
источник
Папка более старых версий Windows (DOS, Windows 95/98 / ME),
DELTREE
является эквивалентомRM
илиRMDIR
. Я используюDELTREE
на своей рабочей станции Windows 7 в пакетных файлах просто отлично, хотя.источник
Я думаю, что вы можете использовать это так:
источник