Я создаю пакетный сценарий, и часть сценария пытается удалить каталог и все его подкаталоги. Я периодически получаю сообщение о том, что подкаталог не пуст. Я прочитал одну статью о том, что виновато индексирование. Я отключил WSearch, но в конце концов снова получил ошибку. Вот команда:
rmdir /S /Q "C:\<dir>\"
windows
batch-file
Погром
источник
источник
Ответы:
Я испытал те же проблемы, о которых упоминал Гарри Джонстон.
rmdir /s /q
будет жаловаться, что каталог не пуст, хотя/s
он предназначен для очистки за вас! Лично я считаю, что это ошибка Windows.Мое решение -
del
все в каталоге перед удалением самого каталога:(
1>nul
Скрывает стандартный вывод,del
потому что в противном случае он перечисляет каждый файл, который он удаляет.)источник
mydir
выдавали ту же ошибку «не пусто». Так что мне пришлосьcd
вmydir
и выполнятьdel
над файлами в каждом из этих каталогов , а также. В конечном итоге это сработало, но если бы мне пришлось повторить процесс в третий раз на другом подуровне, я бы почувствовал себя довольно побежденным.del /s
значит.rd /s /q mydir
команду.Я знаком с этой проблемой. Самый простой обходной путь - условно повторить операцию. Я никогда не видел, чтобы он выходил из строя дважды подряд - если на самом деле нет открытого файла или проблемы с разрешениями, очевидно!
источник
IF EXIST
скрываетAccess is denied
и другие ситуации. Я добавил что-то вродеDIR c:\deleteme
проверки ошибок перед всем.введите командную строку от имени администратора и запустите
источник
Я только что столкнулся с той же проблемой, и это было связано с потерей или повреждением некоторых файлов. Чтобы исправить проблему, просто запустите check disk:
Это можно запустить из окна поиска или из командной строки.
/F
Исправляет любые проблемы , которые он находит, как восстановление файлов. После завершения работы вы можете удалить файлы и папки как обычно.источник
У меня была аналогичная проблема, пытался удалить пустую папку через проводник Windows. Показал мне непустую ошибку, поэтому я подумал, что попробую через admin cmd, но ни один из ответов здесь не помог.
После того, как я переместил файл в пустую папку. Мне удалось удалить непустую папку
источник
Как заявил @gfullam в комментарии к ответу @BoffinbraiN, удаляемый
<dir>
вами сам может не быть тем, который содержит файлы: в нем могут быть подкаталоги,<dir>
которые получают сообщение «Каталог не пуст», и тогда единственным решением будет рекурсивно перебирать каталоги, вручную удаляя все содержащиеся в них файлы ... В итоге я решил использовать портrm
из UNIX.rm.exe
поставляется с Git Bash, MinGW, Cygwin, GnuWin32 и другими. Вам просто нужно иметь его родительский каталог в вашем PATH, а затем выполнять его, как в системе UNIX.Пример пакетного скрипта:
источник
Для меня сработало следующее. Кажется, что команда RMDir почти все время выдает сообщение «Каталог не пуст» ...
источник
У меня был «C: \ Users \ User Name \ OneDrive \ Fonts», который был mklink'ed (/ D) на «C: \ Windows \ Fonts», и у меня возникла та же проблема. В моем случае
помог мне. Надеюсь, тебе это тоже поможет; D
источник
В моем случае я просто переместил папку в корневой каталог вот так.
А затем запустил команду для удаления каталога
источник
rmdir c:\<moved directory> /s /q
это правильный ответПричина
rd /s
отказа в удалении определенных файлов, скорее всего, связана с атрибутами READONLY для файлов в каталоге.Правильный способ исправить это - сначала сбросить атрибуты всех файлов:
Могут быть и другие, такие как скрытые или системные файлы, поэтому, если вы хотите перестраховаться:
источник
Подобно ответу Гарри Джонстона, я повторяю, пока он не сработает.
источник
Иногда Windows «сломана по дизайну», поэтому вам нужно создать пустую папку, а затем отразить «сломанную папку» с «пустой папкой» в режиме резервного копирования.
Создайте пустой каталог следующим образом:
перезаписать сломанную папку пустой вот так:
а затем удалите эту папку
Если это не помогает, попробуйте перезапустить в «режиме восстановления с командной строкой», удерживая Shift при нажатии кнопки перезапуска и пытаясь снова запустить эту команду в режиме восстановления.
источник
/W:0
чтобы избежать ненужных задержек. Возможно, вы этого не захотите,/b
потому что для этого требуются права администратора. Режим восстановления не имеет отношения к этому вопросу, потому что мы говорим о пакетном сценарии, а не о том, кто пытается вручную удалить каталог.Я могу думать о следующих возможных причинах:
Для 1.) вы можете попробовать
runas /user:Administrator
получить более высокие привилегии или запустить командный файл от имени администратора через контекстное меню. Если это не поможет, возможно, даже у администратора нет прав. Затем вам нужно стать владельцем каталога.Для 2.) загрузите Process Explorer , щелкните
Find/Find handle or DLL...
или нажмите Ctrl+F, введите имя каталога и узнайте, кто его использует. Если возможно, закройте приложение, которое использует каталог.источник