Удаление всех файлов с расширением вак из текущего каталога диска
Скажем, есть переменная с именем %pathtofolder% , которая проясняет, что это полный путь к папке.
Я хочу удалить все файлы и подпапки в этом каталоге, но не сам каталог.
Но может быть ошибка типа «этот файл / папка уже используется» . когда это происходит, нужно просто продолжить и пропустить этот файл / папку.
Есть ли какая-то команда для этого?
Это безумие, как трудно Windows удалить папки . Или создать папку, начинающуюся с точки . Слава богу за интеграцию Bash в Windows! rm -rf path\to\folder работает в Windows 10 (или может прийти из Git Bash . в любом случае, если у вас есть, что стоит попробовать!)
Вы можете использовать этот скрипт для очистки папки и файлов в C:\Temp исходном коде :
Создайте пакетный файл (скажем, delete.bat), содержащий указанную выше команду. Перейдите в папку, в которой находится файл delete.bat, а затем выполните команду: delete.bat
Я пробовал, но, к сожалению, файлы, которые не были удалены, удаляются только подпапки. Например, у меня есть папка с именем Test. Он содержит 2 папки с именами «Ripon» и «Wasim» и содержит файл с именем «riponalwasim.txt». Подпапки Ripon и Wasim были удалены, но riponalwasim.txt не был удален.
Используйте одиночный знак процента, если вы хотите работать напрямую из командной строки, например %p
Грустно, что это занимает 2 строки, но, по крайней мере, это работает! Я устал искать работающий «однострочник» и пойду с этим, спасибо!
Вы можете использовать оператор «&&» для выполнения двух команд в одной строке без файла bat (обратите внимание на один «%» вместо «%%»). del / s / q "myfolder *" && FOR / D% p IN ("myfolder *") DO rmdir "% p" / s / q
rmdir моя самая любимая команда для работы. Он работает для удаления огромных файлов и папок с подпапками. Резервная копия не создается, поэтому перед выполнением этой команды убедитесь, что вы скопировали свои файлы безопасно.
Это автоматически удаляет папку и все файлы и подпапки.
Это приведет к удалению самой папки, поэтому вам нужно добавить еще одну команду: md FOLDERNAME (см. Ответ от @rakoczyn ниже).
Что вы подразумеваете под «резервное копирование создано» здесь? Я не вижу ничего, что могло бы создать какую-либо резервную копию .
Чтобы не удалять саму папку, сделайте ее текущей папкой, а затем используйте «.» как FOLDERNAME. Повторное создание этого впоследствии не обязательно то же самое, потому что ACL могли быть потеряны. cd "FOLDERNAME" RD . /S /Q
Самое простое решение, которое я могу придумать, - это удалить весь каталог с помощью
Затем создайте этот каталог снова:
Что делать, если у вас есть разрешение на удаление, но не создание новых папок? Я надеюсь, что это возможно :)
Это плохое решение, так как оно приводит к гонке в файловой системе за узел каталога, то есть вторая команда может потерпеть неудачу, если выполняется сразу после нее.
Кроме того , плохое решение , если каталог имеет специальные разрешения , которые вы просто Nuked гм (упс)
RD и RMDIR - это одна и та же команда, и, поскольку вы опубликовали этот ответ через 9 месяцев после того, как кто-то дал тот же ответ, почему люди дают вам очки?
Это удалит папки и файлы и оставит папку позади.
Для тех, кто не уверен в этом подходе: он определенно не создает каталог заново. Без 2>nul него выводится «Процесс не может получить доступ к файлу, потому что он используется другим процессом».
Я ненавижу, что Windows не может удалить файлы и папки, используемые какой-либо программой. И мне нравится, что вы использовали это в свою пользу в этой строчке.
@mlvljr Только если вы хотите сохранить родительскую папку тоже. RD /? покажет вам простой способ очистить папку.
Это хорошо, если вам нужно вернуться на исходную позицию, иначе просто CD mypath && RD /S . будет достаточно. Мне не нравится, что вам приходится повторять свой путь дважды, хотя для длинных путей его становится трудно читать. Так что я бы просто добавил set p="mypath" в начале.
. удаляет все файлы и папки в данном каталоге, но не сам каталог.
это должен быть правильный ответ .. просто сделайте простой .. deletemyfoldercontents.bat файл .. вставьте ваш путь, и он работает как шарм ..
В командной строке DEL также отсутствует опция /A для удаления файлов со скрытым набором атрибутов, и %dir%\* их следует заключать в двойные кавычки, как, например, "%dir%\*" для каталогов, содержащих пробел или один из этих символов &()[]<>^=;!'+,`~ . И командную строку FOR следует изменить на, for /F "eol=| delims=" %%I in ('dir "%dir%\*" /AD /B 2^>nul') do rd /Q /S "%dir%\%%I" поскольку FOR игнорирует каталоги со скрытым набором атрибутов. DIR с параметрами /AD /B выводит все каталоги только с их именами. Кстати, dir это не хорошее название для переменной среды.
@RMiranda, в моих тестах, он делает именно так, как просил ОП. У вас есть случай, когда он не удаляет подпапки?
Отвечает ли этот ответ требованию «может быть ошибка типа« этот файл / папка уже используется ». когда это происходит, он должен просто продолжить и пропустить этот файл / папку». ?
Обновление :
Из этого полезного комментария (спасибо Moritz Both ) вы можете добавить && между ними, поэтому RMDIR не запустите, если CD команда не будет выполнена (например, имя каталога с ошибкой):
/ S: удаляет дерево каталогов (указанный каталог и все его подкаталоги, включая все файлы).
/ Q: Указывает тихий режим. Не запрашивает подтверждения при удалении дерева каталогов. (Обратите внимание, что / q работает, только если указан / s.)
Это идеально подходит для очистки temp, но это cd [Your_Folder] очень важно - я должен помнить об этом, чтобы не удалять сам каталог .
Это правильное решение. Добавьте && между командами вместо разрыва строки, и вы в безопасности от сбой CD.
довольно плохое решение . Мне, например, нужно это удаление командной строки для обновления SVN - я хочу удалить все файлы и папки, прежде чем я сделаю обновление SVN, потому что могут быть некоторые изменения на машине, где я использую это, но актуально только проверенные в пунктах. Делать RMDIR / S / Q. также удаляет ссылку SVN и, следовательно, больше не делает папку svn
RD расшифровывается как REMOVE Directory.
/ S: Удалить все файлы и подпапки в дополнение к самой папке. Используйте это, чтобы удалить все дерево папок.
/ Q: Тихо - не отображать подтверждение YN
Отвечает ли этот ответ требованию «может быть ошибка типа« этот файл / папка уже используется ». когда это происходит, он должен просто продолжить и пропустить этот файл / папку.»? Например, прерывается ли он полностью вместо продолжения?
Я использую Powershell
Он удалит содержимое папки, а не саму папку.
Ответ rhellem недавно, но это единственный ответ, который действительно сделает это для меня. (Win 8.1, не по выбору)
Простое решение для единой командной строки, которое, конечно же, также можно использовать в командном файле:
Эта командная строка содержит три команды, выполняемые одна за другой.
Первая команда PUSHD помещает текущий путь к каталогу в стек, а затем создает %PathToFolder% текущий каталог для запуска процесса команды.
Это также работает для путей UNC по умолчанию, поскольку расширения команд включены по умолчанию, и в этом случае PUSHD создает временную букву диска, которая указывает на указанный сетевой ресурс, а затем изменяет текущий диск и каталог, используя вновь определенную букву диска.
Система не может найти указанный путь.
Следующая команда RD выполняется только в том случае, если изменение текущего каталога для текущего командного процесса на указанный каталог прошло успешно, то есть указанный каталог вообще существует.
Команда RD с параметрами /Q и тихо /S удаляет каталог со всеми подкаталогами, даже если указанный каталог содержит файлы или папки со скрытым атрибутом или с установленным атрибутом только для чтения. Системный атрибут никогда не препятствует удалению файла или папки.
Папки, используемые в качестве текущего каталога для любого запущенного процесса. Все дерево папок в такой папке не может быть удалено, если папка используется в качестве текущего каталога для любого запущенного процесса.
Файлы, открытые в настоящее время любым запущенным процессом с правами доступа к файлу, установленными для открытия файла, чтобы предотвратить удаление файла во время открытия работающим приложением / процессом. Такой открытый файл также предотвращает удаление всего дерева папок в открытый файл.
Файлы / папки, для которых у текущего пользователя нет необходимых (NTFS) разрешений на удаление файла / папки, что также предотвращает удаление дерева папок в этот файл / папку.
Процесс не может получить доступ к файлу, потому что он используется другим процессом.
Третья команда, POPD , выполняется независимо от значения выхода команды RD .
POPD извлекает путь каталога, выдвинутый PUSHD из стека, и изменяет текущий каталог для запуска процесса команды на этот каталог, то есть восстанавливает исходный текущий каталог. POPD удаляет временную букву диска, созданную PUSHD в случае пути к папке UNC.
Примечание: POPD может молча прекратить восстановление первоначального текущего каталога в случае, если исходный текущий каталог был подкаталогом каталога для очистки, который больше не существует. В этом особом случае %PathToFolder% остается текущий каталог. Поэтому желательно запускать командную строку выше, а не из подкаталога %PathToFolder% .
Еще один интересный факт: я пробовал в командной строке также использовать UNC-путь, используя общий каталог C:\Temp с именем общего ресурса Temp и используя UNC-путь, \\%COMPUTERNAME%\Temp\CleanTest назначенный переменной среды PathToFolder в Windows 7. Если текущий каталог при запуске командной строки является подкаталогом общего локального каталога папка доступ с помощью UNC - пути, то есть C:\Temp\CleanTest\Subfolder1 , Subfolder1 удаляются с помощью РДА , а следующий POPD терпит неудачу молча делаю C:\Temp\CleanTest\Subfolder1 снова текущий каталог в результате Z:\CleanTest оставшегося в качестве текущего каталога для процесса команды работает. Таким образом, в этом очень особом случае временная буква диска остается до тех пор, пока текущий каталог не будет изменен, например, с помощью cd /D %SystemRoot% в локальный каталог действительно существует. К сожалению, POPD не завершается со значением больше 0, если не удается восстановить исходный текущий каталог, что делает невозможным обнаружение этого особого состояния ошибки, используя только код выхода POPD . Однако можно предположить, что никто никогда не сталкивался с этим особенным случаем ошибки, поскольку пути UNC обычно не используются для доступа к локальным файлам и папкам.
Чтобы лучше понять используемые команды, откройте окно командной строки, выполните там следующие команды и внимательно прочитайте справку, отображаемую для каждой команды.
Теперь давайте посмотрим на решение для пакетных файлов, используя команду DEL для удаления файлов в %PathToFolder% и FOR и RD для удаления вложенных папок в %PathToFolder% .
Пакетный файл сначала гарантирует, что переменная среды PathToFolder действительно определена с путем к папке без двойных кавычек и без обратной косой черты в конце. Обратная косая черта в конце не будет проблемой, но двойные кавычки в пути к папке могут быть проблематичными, поскольку PathToFolder во время выполнения пакетного файла значение объединяется с другими строками.
Важны две строки:
Команда DEL используется для удаления всех файлов в указанном каталоге.
Команды FOR и RD используются для удаления всех подкаталогов в указанном каталоге. Но for /D не используется, поскольку FOR игнорирует в этом случае подкаталоги с установленным атрибутом hidden. По этой причине for /F используется для запуска следующей командной строки в отдельном командном процессе, запущенном в фоновом режиме с помощью %ComSpec% /c :
Оператор перенаправления > должен быть экранирован с помощью символа вставки, ^ в командной строке FOR интерпретироваться как литеральный символ, когда интерпретатор команд Windows обрабатывает эту командную строку перед выполнением команды FOR, которая выполняет встроенную dir командную строку в отдельном запущенном командном процессе. на заднем фоне.
FOR обрабатывает захваченный вывод, записанный для обработки STDOUT запущенного командного процесса, которые являются именами подкаталогов без пути и никогда не заключаются в двойные кавычки.
Параметр FOR with /F игнорирует пустые строки, которые здесь не встречаются, поскольку DIR с параметром /B не выводит пустые строки.
FOR также игнорирует строки, начинающиеся с точки с запятой, которая является символом конца строки по умолчанию. Имя каталога может начинаться с точки с запятой. По этой причине eol=| используется для определения символа вертикальной черты как символа конца строки, который ни один каталог или файл не может иметь в своем имени.
FOR разделит строку на подстроки, используя пробел и горизонтальную табуляцию в качестве разделителей, и назначит только первую строку с пробелом / табуляцией для указанной переменной цикла I . Такое поведение разделения здесь нежелательно, поскольку имя каталога может содержать один или несколько пробелов. Поэтому delims= используется для определения пустого списка разделителей, чтобы отключить поведение разделения строк и получить присвоение переменной цикла I , всегда полное имя каталога.
Команда FOR запускает команду RD для каждого имени каталога без пути, поэтому в командной строке RD необходимо еще раз указать путь к папке, который объединяется с именем подпапки.
Чтобы понять используемые команды и то, как они работают, откройте окно командной строки, выполните там следующие команды и внимательно прочитайте все страницы справки, отображаемые для каждой команды.
Windows и многие приложения создают временные файлы. Временный файл содержит данные, которые приложение не желает хранить в оперативной памяти из-за ее неустойчивости. В то же время, в отличие от документов, которые Вы создаете с помощью приложения, эти данные не предназначены для долговременного хранения. Таким образом, временные данные представляют собой нечто среднее — они необходимы, но лишь на короткое время. Проблема заключается в том, что некоторые временные файлы существуют дольше, чем изначально предполагается. Зачастую в этом виновато создавшее их приложение.
Перед началом поиска временных файлов с целью их удаления закройте все приложения, которые можете. Может оказаться, что работающие приложения используют временные файлы для краткосрочного хранения данных или других нужд. Удаление временного файла в этом случае может привести к потере данных и прочим нежелательным последствиям.
Использование командной строки вместо проводника
Хотя проводник и не обнаруживает все временные файлы (лишь их большую часть), он располагает замечательным интерфейсом, а возможность увидеть файлы перед удалением делает очистку значительно безопаснее, чем при использовании утилит командной строки. Все, что Вам требуется сделать после обнаружения временных файлов для их безвозвратного удаления из системы, — выделить и нажать клавиши Shift+Del.
Существует две утилиты командной строки, составляющие альтернативу проводнику — Del и Erase. Однако при их выполнении я рекомендую соблюдать осторожность. Убедитесь в наличии полной резервной копии системы и закройте как можно больше открытых приложений (по возможности оставьте только окно командной строки). Действуют утилиты Del и Erase одинаково, поэтому в качестве примера рассмотрим только утилиту Del. Чтобы удалить файл, введите в командной строке следующую команду:
Del имя_файла
Этот способ не предполагает возможности восстановления, поэтому Вы не обнаружите удаленные файлы в корзине. Ниже перечислены ключи утилиты Del.
Del /S > Удаленные_файлы.ТХТ
Список файлов не появится на экране, однако будет сохранен для последующего анализа.
- /S — удаляет все файлы, удовлетворяющие заданному критерию, в текущей папке и всех вложенных в нее папках. При использовании в корневой папке этот ключ позволяет удалить файлы определенного вида на всем замененном жестком диске. Следует пользоваться данной функцией с осторожностью — во вложенных папках могут оказаться файлы, соответствующие критерию удаления, которые, на самом деле, нужно сохранить.
Достоинства утилиты Del — ее высокое быстродействие и полнота. В отличие от проводника она не пропускает файлы и работает гораздо быстрее. С ее помощью можно очистить жесткий диск за считанные секунды, в то время как использование проводника занимает минуты.
Удаление файлов, начинающихся с тильды
Пожалуй, «самыми» временными файлами можно назвать те, чьи имена начинаются с символа ~ (тильда). Windows и многие приложения, используют файлы, начинающиеся с символа ~ (тильда) и не имеющие расширения, в основном, для хранения битов и фрагментов информации. При этом ни Word, ни другие приложения не прикладывают должных усилий к удалению этих файлов.
При наличии расширения (как, например, файлы, создаваемые Microsoft Word) временный файл представляет собой промежуточную форму документа, над которым Вы работаете. Тем не менее, если окно Word не открыто, а Вы видите подобные файлы на жестком диске, то это обычно указывает на некорректное завершение Word. В этом случае временные файлы могут быть использованы для восстановления потерянных данных документа. К сожалению, после восстановления временные файлы не удаляются, поэтому, возможно, имеет смысл удалить их вручную. Общая идея такова: файл с расширением, как правило, является временной версией документа, и ее не следует удалять, не приняв взвешенного решения.
Не удивляйтесь тому, что размер некоторых временных файлов равен 0 байт (другими словами, в них отсутствует информация). Часть этих файлов действительно пуста, а часть скрывает свою информацию при помощи так называемых потоков данных. Тем не менее, их следует удалить, чтобы освободить элементы каталога для других приложений. Иногда записей каталога не остается, что приводит к нестабильности системы.
Уничтожение ТМР и ВАК-файлов
Обычно удалить ТМР-файлы с жесткого диска можно, закрыв все приложения. Возможно, Windows оставит 1-2 файла открытыми, однако в ТМР-файле никогда не содержатся данные, которые пригодятся Вам в будущем. Удаление ТМР-файлов — дело вполне безопасное и безусловно полезное.
Аналогично ВАК файлы (резервные файлы) содержат старые копии документов, с которыми Вы работаете. После закрытия приложения ВАК-файл перестает использоваться, и Вы можете смело удалить его. Я, как правило, сохраняю ВАК-файлы до создания резервной копии жесткого диска, и удаляю их в процессе последующей очистки. ВАК-файл представляет собой временную резервную копию данных; Вы можете использовать его для восстановления данных, потерянных в результате сбоя приложения.
Не все приложения присваивают файлам расширение ВАК, например, Microsoft Word вместо ВАК использует расширение WBK. Назначение этих файлов то же самое, просто компания-разработчик делает все возможное, чтобы запутать пользователей. Расширения временных файлов должны быть указаны в руководстве пользователя приложения, однако иногда, чтобы определить их, необходимо создать файл и несколько раз сохранить его, а между сеансами сохранения обязательно модифицировать. Временный файл располагается в той же папке, что и исходный, имеет такое же имя, но использует расширение, выделенное приложением для резервных файлов.
Поиск LOG-файлов
LOG-файлы, как правило, представляют собой текстовые документы, описывающие результаты какой-либо процедуры, например, процедуры установки приложения. В случае ошибки LOG-файл сообщает о ней и иногда предлагает возможные варианты ее исправления. Windows создает LOG-файлы при обновлении, указывая в них имена обновленных файлов и описывая свои действия. Говоря кратко, LOG-файлы — это полезные протоколы системной деятельности.
К сожалению, ни Windows, ни приложения никогда не удаляют LOG-файлы, и в этом не следует обвинять компанию-поставщика или программиста, создавшего приложение. Предполагается, что Вы ознакомитесь с содержимым LOG- файла и, следуя соглашению с компанией, удалите или заархивируете его. Иногда само приложение уведомляет Вас о LOG-файле и действиях, которые следует предпринять. В большинстве же случаев приложение даже не сообщает о генерации LOG-файла. Узнать о моменте его создания и определить его местоположение — полностью ваша задача.
LOG-файлы, которые Вы можете безболезненно удалить, находятся в папках приложений и в папке \Windows. Как правило, не следует удалять LOG-файлы из таких папок, как \Windows\System32 и др. Вы можете начать с удаления LOG-файлов из папки \Windows, предварительно прочитав или заархивировав их. После этого займитесь поиском остальных LOG-файлов системы. LOG-файлы, расположенные в папках приложений, следует прочитать, чтобы определить, используются ли они приложением. Если окажется, что нет, можете смело удалять их.
Windows и многие приложения создают временные файлы. Временный файл содержит данные, которые приложение не желает хранить в оперативной памяти из-за ее неустойчивости. В то же время, в отличие от документов, которые Вы создаете с помощью приложения, эти данные не предназначены для долговременного хранения. Таким образом, временные данные представляют собой нечто среднее — они необходимы, но лишь на короткое время. Проблема заключается в том, что некоторые временные файлы существуют дольше, чем изначально предполагается. Зачастую в этом виновато создавшее их приложение.
Перед началом поиска временных файлов с целью их удаления закройте все приложения, которые можете. Может оказаться, что работающие приложения используют временные файлы для краткосрочного хранения данных или других нужд. Удаление временного файла в этом случае может привести к потере данных и прочим нежелательным последствиям.
Использование командной строки вместо проводника
Хотя проводник и не обнаруживает все временные файлы (лишь их большую часть), он располагает замечательным интерфейсом, а возможность увидеть файлы перед удалением делает очистку значительно безопаснее, чем при использовании утилит командной строки. Все, что Вам требуется сделать после обнаружения временных файлов для их безвозвратного удаления из системы, — выделить и нажать клавиши Shift+Del.
Существует две утилиты командной строки, составляющие альтернативу проводнику — Del и Erase. Однако при их выполнении я рекомендую соблюдать осторожность. Убедитесь в наличии полной резервной копии системы и закройте как можно больше открытых приложений (по возможности оставьте только окно командной строки). Действуют утилиты Del и Erase одинаково, поэтому в качестве примера рассмотрим только утилиту Del. Чтобы удалить файл, введите в командной строке следующую команду:
Del имя_файла
Этот способ не предполагает возможности восстановления, поэтому Вы не обнаружите удаленные файлы в корзине. Ниже перечислены ключи утилиты Del.
Del /S > Удаленные_файлы.ТХТ
Список файлов не появится на экране, однако будет сохранен для последующего анализа.
- /S — удаляет все файлы, удовлетворяющие заданному критерию, в текущей папке и всех вложенных в нее папках. При использовании в корневой папке этот ключ позволяет удалить файлы определенного вида на всем замененном жестком диске. Следует пользоваться данной функцией с осторожностью — во вложенных папках могут оказаться файлы, соответствующие критерию удаления, которые, на самом деле, нужно сохранить.
Достоинства утилиты Del — ее высокое быстродействие и полнота. В отличие от проводника она не пропускает файлы и работает гораздо быстрее. С ее помощью можно очистить жесткий диск за считанные секунды, в то время как использование проводника занимает минуты.
Удаление файлов, начинающихся с тильды
Пожалуй, «самыми» временными файлами можно назвать те, чьи имена начинаются с символа ~ (тильда). Windows и многие приложения, используют файлы, начинающиеся с символа ~ (тильда) и не имеющие расширения, в основном, для хранения битов и фрагментов информации. При этом ни Word, ни другие приложения не прикладывают должных усилий к удалению этих файлов.
При наличии расширения (как, например, файлы, создаваемые Microsoft Word) временный файл представляет собой промежуточную форму документа, над которым Вы работаете. Тем не менее, если окно Word не открыто, а Вы видите подобные файлы на жестком диске, то это обычно указывает на некорректное завершение Word. В этом случае временные файлы могут быть использованы для восстановления потерянных данных документа. К сожалению, после восстановления временные файлы не удаляются, поэтому, возможно, имеет смысл удалить их вручную. Общая идея такова: файл с расширением, как правило, является временной версией документа, и ее не следует удалять, не приняв взвешенного решения.
Не удивляйтесь тому, что размер некоторых временных файлов равен 0 байт (другими словами, в них отсутствует информация). Часть этих файлов действительно пуста, а часть скрывает свою информацию при помощи так называемых потоков данных. Тем не менее, их следует удалить, чтобы освободить элементы каталога для других приложений. Иногда записей каталога не остается, что приводит к нестабильности системы.
Уничтожение ТМР и ВАК-файлов
Обычно удалить ТМР-файлы с жесткого диска можно, закрыв все приложения. Возможно, Windows оставит 1-2 файла открытыми, однако в ТМР-файле никогда не содержатся данные, которые пригодятся Вам в будущем. Удаление ТМР-файлов — дело вполне безопасное и безусловно полезное.
Аналогично ВАК файлы (резервные файлы) содержат старые копии документов, с которыми Вы работаете. После закрытия приложения ВАК-файл перестает использоваться, и Вы можете смело удалить его. Я, как правило, сохраняю ВАК-файлы до создания резервной копии жесткого диска, и удаляю их в процессе последующей очистки. ВАК-файл представляет собой временную резервную копию данных; Вы можете использовать его для восстановления данных, потерянных в результате сбоя приложения.
Не все приложения присваивают файлам расширение ВАК, например, Microsoft Word вместо ВАК использует расширение WBK. Назначение этих файлов то же самое, просто компания-разработчик делает все возможное, чтобы запутать пользователей. Расширения временных файлов должны быть указаны в руководстве пользователя приложения, однако иногда, чтобы определить их, необходимо создать файл и несколько раз сохранить его, а между сеансами сохранения обязательно модифицировать. Временный файл располагается в той же папке, что и исходный, имеет такое же имя, но использует расширение, выделенное приложением для резервных файлов.
Поиск LOG-файлов
LOG-файлы, как правило, представляют собой текстовые документы, описывающие результаты какой-либо процедуры, например, процедуры установки приложения. В случае ошибки LOG-файл сообщает о ней и иногда предлагает возможные варианты ее исправления. Windows создает LOG-файлы при обновлении, указывая в них имена обновленных файлов и описывая свои действия. Говоря кратко, LOG-файлы — это полезные протоколы системной деятельности.
К сожалению, ни Windows, ни приложения никогда не удаляют LOG-файлы, и в этом не следует обвинять компанию-поставщика или программиста, создавшего приложение. Предполагается, что Вы ознакомитесь с содержимым LOG- файла и, следуя соглашению с компанией, удалите или заархивируете его. Иногда само приложение уведомляет Вас о LOG-файле и действиях, которые следует предпринять. В большинстве же случаев приложение даже не сообщает о генерации LOG-файла. Узнать о моменте его создания и определить его местоположение — полностью ваша задача.
LOG-файлы, которые Вы можете безболезненно удалить, находятся в папках приложений и в папке \Windows. Как правило, не следует удалять LOG-файлы из таких папок, как \Windows\System32 и др. Вы можете начать с удаления LOG-файлов из папки \Windows, предварительно прочитав или заархивировав их. После этого займитесь поиском остальных LOG-файлов системы. LOG-файлы, расположенные в папках приложений, следует прочитать, чтобы определить, используются ли они приложением. Если окажется, что нет, можете смело удалять их.
Как безопасно удалить все файлы с определенным расширением (например .bak ) из текущего каталога и всех подпапок с помощью одной командной строки? Просто я боюсь использовать, rm потому что я однажды использовал это неправильно, и теперь мне нужен совет.
Вам даже не нужно использовать rm в этом случае, если вы боитесь. Используйте find :
Но используйте его с осторожностью. Запустите сначала:
чтобы увидеть, какие именно файлы вы будете удалять.
Также убедитесь, что -delete это последний аргумент в вашей команде. Если вы поставите его перед -name *.bak argument , он удалит все .
Смотрите man find и man rm для получения дополнительной информации, а также увидеть этот связанный вопрос по SE:
С настройками по умолчанию rm *.bak будут удалены только все файлы, заканчивающиеся на .bak в текущем каталоге. Чтобы также выполнять действия в подкаталогах, которые вам либо понадобились для работы с глобусами, используйте опцию -r или пример поиска.
@Hennes Будь осторожен с rm -r *.bak ! Он также удаляет каталоги, заканчивающиеся .bak всем их содержимым.
Убедитесь, что -delete это последний аргумент в вашей команде. Если вы поставите его перед -name *.bak аргументом, он удалит все.
Это не просто альтернатива, а пример того, как другие команды могут быть объединены вместе с каналом '|'. +1
Эти альтернативные решения работают в других средах, в которых отсутствует -delete (например, cygwin)
Сначала запустите команду shopt -s globstar . Вы можете запустить это в командной строке, и это будет действовать только в этом окне оболочки. Вы можете положить его в свой .bashrc , и тогда все вновь запущенные снаряды подберут его. Результатом этой команды является **/ рекурсивное создание файлов совпадений в текущем каталоге и его подкаталогах (по умолчанию **/ означает то же самое, что и */ : только в непосредственных подкаталогах). Затем:
(или gvfs-trash **/*.bak или что у тебя).
Удаление файлов для меня не то, что вы должны использовать rm для. Вот альтернатива:
Как утверждает Флимм в комментариях:
Пакет trash-cli делает то же самое, что и gvfs-trash без зависимости от gvfs.
Вам не нужно создавать псевдоним для этого, потому что trash-cli пакет предоставляет команду trash , которая делает то, что мы хотим.
Как поясняет Элия Каган в подробных комментариях, вы также можете сделать это рекурсивным использованием find . В этом случае вы не можете использовать псевдоним, поэтому команды ниже предполагают, что вы установили trash-cli . Я суммирую комментарии Элии:
Эта команда находит и отображает все .bak файлы и символические ссылки в любом месте текущего каталога или его подкаталогов или ниже.
Для того, чтобы удалить их, добавьте к -exec с trash командой:
-xtype f выбирает файлы и символические ссылки на файлы, но не папки. Чтобы также удалить папки .bak, удалите эту часть и используйте ее -execdir , чтобы избежать cannot trash non-existent ошибок для .bak файлов внутри .bak каталогов:
«Не используйте rm для удаления вещи» является спорным утверждением , но я должен согласиться , что часто разумнее использовать что - то , что позволит вам отменить вещи.
Я хочу удалить все файлы из структуры папок, поэтому у меня осталась пустая структура папок.
Это может быть достигнуто в пакетном или VBScript сценариях?
Я пробовал очень простую пакетную команду, но для этого требовалось, чтобы пользователь разрешил удаление каждого файла. Это не подходящее решение, так как существует много сотен файлов, и со временем оно значительно увеличится.
Что вы можете предложить?
Вы имеете в виду рекурсивное удаление? Это действительно может быть сделано. Нечто подобное rd /s /q "c:\folder a выполнит рекурсивное удаление всех файлов и папок внутри Folder A
Я мог бы сделать, я не знаю, как писать сценарии в powershell, но у меня были сценарии powershell для предыдущего запуска.
Сейчас самое подходящее время для изучения, я бы исследовал синтаксис batch и vbs для унаследованных целей, но потратил больше времени на изучение PS.
У меня еще не было возможности проверить код, хотя я уверен, что он будет работать. Я вернусь и выберу наиболее подходящий ответ на мой первоначальный запрос.
Я буду второй рекомендацией BigHomie - я только что изучил PowerShell и должен сказать, что он довольно аккуратный - не слишком сложный, хорошее оружие в арсенале любого кодера. Я использую это довольно часто сейчас.
Это можно сделать с помощью PowerShell :
Эта команда получает каждый дочерний элемент $path , выполняет метод удаления для каждого элемента и работает довольно быстро. Структура папок осталась нетронутой.
Если у вас могут быть файлы без расширения, используйте
Похоже, что -File параметр мог быть добавлен после PowerShell v2. Если это так, то
Это должно сделать трюк для файлов с расширением.
Они не могут реализовать powershell --version ? Разве они не могут использовать номер версии с положительными цифрами? Это просто безумие. Более 1300 голосов за вопрос о том, как узнать номер версии программы?
Короткая и удобная PowerShell. Не уверен, с какой низшей версией PS он будет работать.
Это должен быть принятый ответ, вы можете даже просто напечатать, rm * так как на самом деле не рекомендуется форсировать (в любом случае в диалоговом окне подтверждения есть опция «Да для всех»).
Вы можете сделать это с помощью del команды:
/S Переключатель , чтобы удалить только файлы рекурсивно.
Да. Вы можете добавить /P опцию, чтобы она попросила вас подтвердить каждое удаление, чтобы проверить это.
Да. А для удаления скрытых и системных файлов сделайте attrib -s -r -h Folder\*.* /s /d перед удалением. А для разрешений используйте takeown команду.
И вы можете использовать / Q, чтобы НЕ запрашивать подтверждение при использовании подстановочных знаков.
Читая между строк вашего исходного вопроса, я могу предложить альтернативную строку кода BATCH, которую вы можете использовать. При запуске будут удалены только файлы старше 60 дней. Таким образом, вы можете поместить это в запланированное задание, и при запуске оно удалит лишние файлы, которые вам не нужны, вместо того, чтобы уничтожить весь каталог. Вы можете изменить от 60 до 5 дней или даже 1 день, если хотите. Это не удаляет папки.
Спасибо за идею, но в настоящее время я думаю, что процесс «опорожнения» будет завершен в очень незапланированные временные рамки. Я оставлю этот код на будущее! Приветствия
Используйте PowerShell для удаления отдельного файла или папки. Перед выполнением команды Delete в powershell мы должны убедиться, что вы вошли на сервер или ПК с учетной записью, которая имеет полный доступ к объектам, которые вы хотите удалить.
Remove-Item -Path "C: \ dotnet-helpers \ DummyfiletoDelete.txt"
Приведенная выше команда выполнит и удалит файл «DummyfiletoDelete.txt», который находится внутри папки «C: \ dotnet-helpers».
Remove-Item -Path "C: \ dotnet-helpers *. *" -Recurse
-recurse сверлит вниз и находит намного больше файлов. Этот –recurse параметр позволит PowerShell удалять любые дочерние элементы без запроса разрешения. Кроме того, параметр –force может быть добавлен для удаления скрытых или доступных только для чтения файлов.
Использование команды -Force для принудительного удаления файлов
Remove-Item -Path "C: \ dotnet-helpers *. *" -Force
Читайте также: