Подтвердить что ты не робот

Пакет - получение "Каталог не пуст" в команде rmdir

Я делаю пакет script, а часть script пытается удалить каталог и все его подкаталоги. Я получаю прерывистую ошибку о том, что подкаталог не пуст. Я читал одну статью о том, что индексирование является виновником. Я отключил WSearch, но в итоге я снова получил ошибку.

rmdir /S /Q "C:\<dir>\"
4b9b3361

Ответ 1

У меня были те же проблемы, что и Гарри Джонстон. rmdir /s /q будет жаловаться на то, что каталог не был пустым, хотя /s предназначен для освобождения для вас! Я думаю, что это ошибка в Windows, лично.

Мое обходное решение - это del все в каталоге перед удалением самого каталога:

del /f /s /q mydir 1>nul
rmdir /s /q mydir

(1>nul скрывает стандартный вывод del, потому что в противном случае он перечисляет каждый отдельный файл, который он удаляет.)

Ответ 2

Я знаком с этой проблемой. Простейшим обходным путем является условное повторение операции. Я никогда не видел, чтобы он терпел неудачу дважды подряд - если на самом деле не существует открытого файла или проблемы с разрешениями, очевидно!

rd /s /q c:\deleteme
if exist c:\deleteme rd /s /q c:\deleteme

Ответ 3

Я только столкнулся с той же проблемой, и это связано с тем, что некоторые файлы потеряны или повреждены. Чтобы исправить проблему, просто запустите контрольный диск:

chkdsk /F e:

Это можно запустить из окна окна поиска или из командной строки. /F исправляет любые обнаруженные проблемы, например восстановление файлов. После завершения работы вы можете удалить файлы и папки, как обычно.

Ответ 4

введите Командная строка в качестве администратора и запустите

rmdir /s <FOLDER>

Ответ 5

Как указано в комментарии к @BoffinbraiN, комментарий <dir>, который вы удаляете, может быть не таким, который содержит файлы: в <dir> могут быть подкаталоги, которые получают "каталог не пуст" сообщение, и единственным решением тогда было бы рекурсивно перебирать каталоги, вручную удаляя все их содержащие файлы... Я решил решить использовать порт rm из UNIX. rm.exe поставляется с Git Bash, MinGW, Cygwin, GnuWin32 и другими. Вам просто нужно иметь родительский каталог в вашем PATH, а затем выполнить так же, как в системе UNIX.

Пакет script пример:

set PATH=C:\cygwin64\bin;%PATH%
rm -rf "C:\<dir>"

Ответ 6

У меня была аналогичная проблема, я попытался удалить пустую папку через проводник Windows. Показывает мне непустую ошибку, поэтому я решил попробовать ее с помощью admin cmd, но ни один из ответов здесь не помог.

После того, как я переместил файл в пустую папку. Мне удалось удалить непустую папку

Ответ 7

Что сработало для меня, так это следующее. Мне кажется, что команда RMDir выдаст "каталог не пустой" почти все время...

:Cleanup_Temporary_Files_and_Folders

Erase /F /S /Q C:\MyDir

RMDir /S /Q C:\MyDir
If  Exist  C:\MyDir  GoTo Cleanup_Temporary_Files_and_Folders

Ответ 8

Я могу думать о следующих возможных причинах:

  • есть файлы или подкаталоги, которым требуются более высокие разрешения
  • Существуют файлы, которые используются не только WSearch, но, возможно, вашим антивирусным сканером или чем-либо еще.

Для 1.) вы можете попробовать runas /user:Administrator, чтобы получить более высокие привилегии или запустить командный файл в качестве администратора через контекстное меню. Если это не поможет, возможно, даже администратор не имеет прав. Затем вам нужно взять на себя управление каталогом.

Для 2.) скачать Process Explorer, нажмите Find/Find handle or DLL... или нажмите Ctrl+F, введите имя каталога и узнайте, кто использует его. Закройте приложение, которое использует каталог, если это возможно.

Ответ 9

Как и Гарри Джонстон, я зацикливаюсь до тех пор, пока это не сработает.

set dirPath=C:\temp\mytest
:removedir
if exist "%dirPath%" (
    rd /s /q "%dirPath%" 
    goto removedir
)

Ответ 10

У меня был "C:\Users\Имя пользователя \OneDrive\Fonts", который был связан с mklink (/D) до "C:\Windows\Fonts", и у меня была та же проблема. В моем случае

cd "C:\Users\Имя пользователя \OneDrive"

RD/S шрифты

Y (для подтверждения действия)

помог мне. Я надеюсь, что это поможет вам; D

Ответ 11

В моем случае я просто переместил папку в корневую директорию.

move <source directory> c:\

И затем выполнил команду для удаления каталога

rmdir c:\<moved directory> /s /q

Ответ 12

rmdir <directory> /s

это сработало для меня.

Ответ 13

Это происходит потому, что вы находитесь в каталоге. Убедитесь, что ваш CLI и проводник не находятся в каталоге. Закройте все из них, чтобы быть уверенным. Затем запустите от имени администратора и cd в родительский каталог и выполните команду:

rmdir /s /q mydir

Ответ 14

jrose, chkdsk /F e:, частично работал у меня. После запуска del и rmdir продолжалось сбой, но просто удалялся каталог в проводнике.