How to delete files recursively with the cmd command prompt in Windows?
Tutorial on how to delete files recursively with cmd, i.e. from a folder and all its subfolders. Use the del batch command line and the recursive option. The Windows delete command provides this useful option automate the deletion process. For example, if you have a huge amount to delete but need to keep the folder and subfolder’s structure.
Advantages of recursivity using Windows cmd
Indeed, it’s the main goal of this tutorial, to be effective and avoid browsing all the subfolders in order to search for a specific file name or extension. The main option that I suggest using is the deletion confirmation, this way you can control one last time which files are recursively deleted. Please note that the files deleted in recursive mode with the command line are not stored in the Windows Recycle Bin. Here is below a list of a few advantages it offers:
- Efficiency: It allows for quick deletion of multiple files and directories with a single command, eliminating the need to select each file or folder individually.
- Precision: With the use of wildcards and specific file extensions, users can target they want to remove, ensuring that only the intended items are deleted without affecting others.
- Depth: It can effortlessly reach and remove files nested deep within multiple subdirectories, which might be tedious through a graphical interface.
- Scripting and Automation: For repetitive tasks, users can create batch scripts to delete specific sets of files, allowing for easy automation and scheduling of clean-up tasks.
- Resource Light: Using cmd is less resource-intensive than graphical interfaces, ensuring smoother system performance, especially when dealing with a large number of files.
- Flexibility: Advanced users can combine file deletion with other command-line operations, achieving complex file management tasks seamlessly.
Make sure you delete the proper files only. The operation is irreversible.
Batch delete files in subdirectories in command prompt
To delete files recursively using the explicit path, without any confirmation prompt, use this command:
del /s "C:\Folder\"
You can also use this variation, without the quotes and without any confirmation prompt. The quotes are mandatory when the complete path of the folder, or the file, contains spaces.
del /s C:\Folder\
Recursively suppress files with a confirmation
This option is the one I recommend. Indeed, make sure to double check and confirm before all files are deleted. Please note that this option deletes only the text files as we use the *.txt filter.
del /p /s SubFolder_1\*.txt
Then a prompt is displayed for the files that match, in alphabetical order:
c:\Folder\SubFolder_1\file (1).txt, Delete (Y/N)?
Delete files and directories without confirmation
To force the deletion with no prompt at all use the delete quiet mode. Useful with a lot of files.
del /q /s SubFolder_2\*.txt
Conclusion and safety tips for batch recursive deletion
To conclude, the del /s recursive option is the fastest and easiest way to delete files recursively with cmd in Windows. Using cmd for recursive file deletion is powerful, but it requires caution. Always double-check paths and file filters to target the correct items. Since files deleted via cmd bypass the Windows Recycle Bin, ensure you have backups of essential data.
When in doubt, use the confirmation prompt (/p
option) to verify each file’s deletion. Always prioritize data security when harnessing the command line’s efficiency. Here is how to copy recursively files and folders using the xcopy command.
Все способы:
- Полезные советы перед удалением папок через консоль
- Способ 1: Использование команды RMDIR (RD) для директорий
- Способ 2: Использование PowerShell и команды Remove-Item
- Способ 3: Удаление через PowerShell с использованием конвейеров
- Популярные условия для фильтрации папок в PowerShell
- Способ 4: Использование команды DELTREE в режиме совместимости
- Вопросы и ответы: 0
Полезные советы перед удалением папок через консоль
Работа с папками через консоль Windows требует некоторой подготовки и понимания основных принципов. Перед тем как начать удаление директорий, нужно правильно определить путь к нужным папкам и научиться ориентироваться в консольном интерфейсе. Многие пользователи обходят стороной «Командную строку», считая ее слишком сложной. Однако несколько базовых приемов значительно упростят взаимодействие с ней. Точное указание пути является фундаментальным элементом для выполнения любых операций с папками в «Командной строке». Неверно указанный путь приведет к ошибкам или, что гораздо хуже, к удалению не тех директорий, которые планировалось удалить. Следующие практические рекомендации помогут избежать распространенных ошибок и сделают процесс удаления папок более эффективным.
- Использование команды CD для навигации. Команда CD (Change Directory) дает возможность перемещаться между папками в файловой системе. Это устраняет необходимость постоянно вводить полный путь при каждой операции с папками. К примеру, введя команду
CD C:\Users\Username\Documents
, вы перейдете в директорию Documents. После этого вы сможете выполнять операции с папками внутри нее, указывая только их имена без полного пути. Такой подход существенно сокращает объем ввода и минимизирует вероятность ошибок при написании пути. - Просмотр содержимого директории с помощью DIR. Перед тем как удалять папки, настоятельно рекомендуется проверить содержимое текущей директории с помощью команды DIR. Эта команда покажет полный список всех файлов и папок в текущем расположении. Такая предварительная проверка поможет убедиться, что вы находитесь в нужной директории, и точно определить названия папок, которые планируется удалить. Команда DIR также может использоваться с масками для фильтрации результатов, например
DIR /AD
покажет только папки в текущей директории. - Использование автодополнения с помощью клавиши Tab. Для ускорения ввода длинных путей к папкам и предотвращения опечаток, активно используйте клавишу Tab. Эта функция автоматически дополняет названия папок и файлов при вводе. Начните вводить путь или имя папки и нажмите Tab – система предложит возможные варианты завершения. Если нажать Tab повторно, можно переключаться между доступными вариантами. Эта функция особенно полезна при работе с папками, имеющими длинные или сложные названия с большим количеством символов.
- Открытие «Командной строки» в определенной директории. Чтобы сразу открыть консоль в необходимой папке и избежать долгой навигации, воспользуйтесь проводником Windows. Перейдите к нужной директории в проводнике, после чего нажмите и удерживайте клавишу Shift, одновременно кликнув правой кнопкой мыши. В появившемся контекстном меню выберите пункт «Открыть окно командной строки здесь» или «Открыть окно PowerShell здесь». Этот прием позволяет мгновенно начать работу в требуемой директории без необходимости ручной навигации.
- Копирование пути из проводника Windows. Если вы сомневаетесь в точности пути к папке, скопируйте его напрямую из проводника Windows. Для этого перейдите к нужной директории в проводнике, щелкните в адресной строке для выделения пути и скопируйте его (Ctrl+C). Затем вставьте полученный путь в консоль (правый клик мыши или Ctrl+V в PowerShell). При вставке в классическую «Командную строку» может потребоваться заключить путь в кавычки, особенно если в нем содержатся пробелы или специальные символы.
Способ 1: Использование команды RMDIR (RD) для директорий
Удаление папок через консоль Windows является необходимым навыком для управления файловой системой без использования графического интерфейса. Существует специальная команда RMDIR (или сокращенно RD), разработанная именно для удаления директорий. Эта команда присутствует во всех версиях Windows и не требует установки дополнительного программного обеспечения. Изначально RMDIR создавалась для удаления только пустых директорий, однако при использовании определенных параметров она превращается в мощный инструмент для удаления целых структур папок со всем их содержимым. Это делает ее незаменимой при необходимости массовой очистки разделов жесткого диска или быстрой реорганизации файловой системы.
Для удаления папки с помощью RMDIR необходимо открыть «Командную строку» и ввести команду в следующем формате:
RMDIR путь_к_директории
или используя сокращенный вариант:
RD путь_к_директории
Команда RMDIR имеет два ключевых аргумента для работы с папками:
- /S. Этот параметр указывает на необходимость удаления не только самой директории, но и всех файлов и поддиректорий внутри нее. По сути, он превращает команду в инструмент для рекурсивного удаления целых ветвей файловой структуры. Если не использовать данный параметр, команда RMDIR сможет удалить только пустые директории и выдаст ошибку при попытке удалить папку, в которой есть файлы или другие папки. Поэтому при необходимости полного удаления непустой директории параметр /S является обязательным.
- /Q. Данный параметр отключает запрос подтверждения при удалении директории со всем ее содержимым. Обычно система запрашивает подтверждение в формате «Вы уверены (Y/N)?» перед удалением папки с файлами. Параметр /Q (от слова Quiet – тихий) позволяет пропустить этот запрос и выполнить удаление немедленно. Этот аргумент особенно полезен при автоматизации процессов или при необходимости удаления большого количества директорий. Однако его следует использовать с большой осторожностью, так как он устраняет последнюю защиту от случайного удаления важных данных.
Способ 2: Использование PowerShell и команды Remove-Item
Консоль PowerShell представляет собой более современный и функциональный терминал, доступный во всех актуальных версиях Windows. PowerShell предлагает расширенные возможности по сравнению с традиционной «Командной строкой» и включает в себя универсальную команду Remove-Item для управления как файлами, так и директориями. Данная команда отличается более гибким набором параметров и возможностью интеграции с другими командами PowerShell через систему конвейеров. Remove-Item обеспечивает более тонкий контроль над процессом удаления папок и предоставляет дополнительные опции для работы с защищенными или системными директориями.
Remove-Item путь_к_директории
PowerShell также поддерживает сокращенный алиас для Remove-Item: rm путь_к_директории
.
Команда Remove-Item имеет расширенный набор параметров для работы с директориями:
- -Recurse. Этот параметр позволяет рекурсивно удалять все содержимое директории, включая все вложенные файлы и поддиректории любой глубины вложенности. Функционально этот параметр аналогичен аргументу RMDIR /S, но интегрирован в экосистему PowerShell. Использование параметра -Recurse является обязательным, если необходимо удалить непустую директорию. Без него команда Remove-Item сможет удалить только пустые папки, аналогично базовой команде RMDIR.
- -Force. Обеспечивает принудительное удаление защищенных, скрытых и системных директорий, а также папок с особыми атрибутами. Данный параметр объединяет функциональность различных аргументов традиционной «Командной строки» и предоставляет более универсальный подход к преодолению ограничений доступа к директориям. Параметр -Force особенно полезен при необходимости удаления папок, созданных системой или другими программами с ограниченными правами доступа.
- -Confirm. Добавляет запрос подтверждения перед удалением каждого объекта, что обеспечивает дополнительный уровень контроля при массовом удалении. Использование данного параметра создает дополнительную защиту от случайного удаления важных папок и рекомендуется при выполнении операций с критически важными директориями или при работе в системных папках. Каждый раз перед удалением система будет запрашивать подтверждение, что позволяет более внимательно контролировать процесс.
- -WhatIf. Уникальный параметр PowerShell, который демонстрирует, какие действия будут выполнены при запуске команды, но не производит фактического удаления директорий. Данный режим позволяет безопасно моделировать результаты команды перед ее реальным выполнением, что особенно ценно при работе со сложными путями или при массовом рекурсивном удалении структур папок. Использование параметра -WhatIf помогает избежать непреднамеренного удаления важных директорий.
Способ 3: Удаление через PowerShell с использованием конвейеров
PowerShell предлагает продвинутый метод удаления директорий с использованием конвейеров (pipelines), который позволяет комбинировать несколько команд для более сложных операций с папками. Этот подход особенно полезен, когда необходимо выполнить выборочное удаление папок на основе определенных критериев, например, даты создания, размера или имени. Конвейеры в PowerShell предоставляют непревзойденную гибкость и возможность автоматизации процессов удаления директорий, которые невозможно достичь с помощью стандартной «Командной строки». Этот метод требует базового понимания принципов работы PowerShell, но предлагает значительные преимущества для опытных пользователей.
Get-ChildItem -Path путь -Directory | Where-Object {условие} | Remove-Item -Recurse -Force
Этот метод включает несколько ключевых компонентов PowerShell:
- Get-ChildItem. Команда для получения списка объектов (файлов и папок) в указанной директории. Параметр -Directory ограничивает вывод только папками, исключая файлы из рассмотрения. Эта команда является начальным этапом конвейера и подготавливает список папок для последующей фильтрации. Get-ChildItem имеет множество параметров для глубокого поиска и фильтрации, включая -Recurse для поиска во вложенных директориях.
- Where-Object. Позволяет фильтровать результаты по различным критериям, таким как имя папки, дата создания или изменения, размер и другие атрибуты. Например, можно выбрать только папки, созданные раньше определенной даты или имеющие определенное слово в названии. Эта часть конвейера обеспечивает точный отбор директорий для удаления на основе заданных условий.
- Remove-Item. Финальная команда в конвейере, которая удаляет отфильтрованные директории. Использование параметров -Recurse и -Force обеспечивает полное удаление папок вместе со всем содержимым и преодоление ограничений доступа. Эта команда получает на вход только те папки, которые прошли через фильтры предыдущих команд в конвейере.
Популярные условия для фильтрации папок в PowerShell
При использовании конструкции Where-Object в PowerShell правильно сформулированные условия играют ключевую роль в точном отборе папок для удаления. Условия фильтрации позволяют указать конкретные характеристики директорий, которые необходимо обработать. Это значительно снижает риск случайного удаления важных папок и повышает точность операций массового удаления. Ниже приведены наиболее востребованные условия, которые можно использовать в команде Where-Object для эффективной фильтрации папок перед их удалением.
- Фильтрация по имени папки. Позволяет выбрать папки, содержащие определенный текст в названии:
Where-Object { $_.Name -like "*backup*" }
выберет все папки, в названии которых есть слово «backup». Для точного совпадения используйте оператор -eq:Where-Object { $_.Name -eq "temp" }
. Можно также использовать регулярные выражения с оператором -match:Where-Object { $_.Name -match "^log_\d+" }
для поиска папок, начинающихся с «log_» и содержащих цифры. - Фильтрация по дате создания. Позволяет отбирать папки, созданные в определенный период:
Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-30) }
выберет папки, созданные более 30 дней назад. Для выбора папок, созданных в конкретный день:Where-Object { $_.CreationTime.Date -eq (Get-Date "2024-01-15").Date }
. Также можно указать диапазон дат:Where-Object { $_.CreationTime -ge (Get-Date "2024-01-01") -and $_.CreationTime -le (Get-Date "2024-01-31") }
. - Фильтрация по дате изменения. Позволяет выбирать папки по дате последнего изменения:
Where-Object { $_.LastWriteTime -gt (Get-Date).AddMonths(-1) }
выберет папки, измененные за последний месяц. Для выбора давно неиспользуемых папок:Where-Object { $_.LastWriteTime -lt (Get-Date).AddYears(-1) }
найдет директории, не изменявшиеся более года. - Фильтрация по атрибутам. Позволяет выбирать папки с определенными атрибутами:
Where-Object { $_.Attributes -match "Hidden" }
выберет все скрытые папки. Для поиска только обычных папок без специальных атрибутов:Where-Object { -not ($_.Attributes -match "System|Hidden|ReadOnly") }
. Можно комбинировать несколько атрибутов:Where-Object { $_.Attributes -match "Hidden" -and $_.Attributes -match "ReadOnly" }
. - Фильтрация по размеру. Для подсчета размера папок и выбора по размеру можно использовать:
Get-ChildItem -Directory | ForEach-Object { $size = (Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum).Sum; [PSCustomObject]@{Name=$_.Name; Size=$size} } | Where-Object { $_.Size -gt 1GB } | Select-Object Name, @{Name="SizeGB";Expression={$_.Size/1GB}} | ForEach-Object { Remove-Item (Join-Path -Path $путь -ChildPath $_.Name) -Recurse -Force }
. Это позволит удалить папки размером более 1 ГБ. - Комбинированные условия. Можно объединять несколько условий с помощью логических операторов -and и -or:
Where-Object { $_.Name -like "*temp*" -and $_.LastWriteTime -lt (Get-Date).AddDays(-7) }
выберет временные папки, не изменявшиеся более недели. Другой пример:Where-Object { ($_.Name -like "*backup*" -or $_.Name -like "*archive*") -and -not ($_.Attributes -match "System") }
выберет все папки резервных копий и архивов, не являющиеся системными.
Способ 4: Использование команды DELTREE в режиме совместимости
Для пользователей, знакомых с более старыми версиями DOS и Windows, может быть интересна возможность использования классической команды DELTREE. Хотя эта команда официально не поддерживается в современных версиях Windows, существует возможность эмулировать ее работу через создание специального макроса или алиаса в системе. DELTREE была популярна в эпоху DOS и ранних версий Windows благодаря своей простоте и эффективности при удалении целых директорий. Основное преимущество DELTREE заключалось в том, что она изначально была предназначена для рекурсивного удаления папок со всем содержимым, не требуя дополнительных параметров, как в случае с RMDIR /S.
DOSKEY DELTREE=RMDIR /S /Q $*
После создания этого алиаса можно использовать команду DELTREE следующим образом:
DELTREE путь_к_директории
Важные особенности использования DELTREE:
- Создание алиаса. Команда DOSKEY позволяет создать временный алиас DELTREE, который будет работать в текущей сессии «Командной строки». Чтобы сделать этот алиас постоянным, необходимо создать файл макросов и настроить автозагрузку этого файла при запуске консоли. Такой подход позволяет восстановить функциональность классической команды DOS в современных системах Windows.
- Автоматическое удаление. Созданный алиас DELTREE автоматически включает параметры /S и /Q для команды RMDIR, что обеспечивает рекурсивное удаление директорий без запроса подтверждения. Это делает команду более похожей на оригинальную DELTREE из DOS. Пользователю следует помнить, что такой алиас не запрашивает подтверждения, поэтому следует быть предельно внимательным при его использовании.
- Совместимость. Хотя этот метод эмулирует поведение классической команды DELTREE, важно понимать, что фактически выполняется команда RMDIR с параметрами. Поэтому все ограничения и особенности RMDIR также применимы к этому алиасу. Этот подход особенно полезен для пользователей, привыкших к синтаксису более старых операционных систем или при миграции скриптов с устаревших платформ.
Наша группа в TelegramПолезные советы и помощь
Introduction
If you need to copy an entire directory to a new destination in Windows,
you can use xcopy
. This guide will show you how to use xcopy
to recursively copy a directory, all of its subdirectories, and
include hidden files. We will also look at how to remove a directory with
rmdir
and move a directory with move
.
Recursively copy a directory
The command to recursively copy in Windows command prompt is:
xcopy some_source_dir new_destination_dir\ /E/H
It is important to include the trailing slash \
to tell xcopy the destination
is a directory.
The two options are also important:
/E
— Copy all subdirectories/H
— Copy hidden files too (e.g..git
)
You can see more options by running:
xcopy /?
Move a directory
To simply move a directory instead of copying it, use the move
command.
move some_directory new_directory_name
Remove a directory
To remove a directory and all of its contents, you can use rmdir
.
rmdir some_directory /Q/S
The important options are:
/Q
— Do not prompt with «Are you sure?»/S
— Delete all contents and sub-directories
Run rmdir /?
for more help.
Conclusion
You should now know how to recursively copy a directory including hidden files
in Windows using xcopy
, delete a directory using rmdir
, and move a directory
using move
.
Do you want to delete a directory from Windows command prompt(CMD)? This post explains how to use the command rmdir
to delete folders and their contents. You can also find examples for each use case of folder deletion – empty folders, non empty folders, folders with white spaced names etc.
Delete folder from CMD
Run the command rmdir
on the folder.
rmdir directoryname
Example:
C:>rmdir emptydir C:>
How to delete a non empty folder
The simple rmdir
does not work for folders having some content.
C:>rmdir nonemptydir The directory is not empty.
Use /s
option to delete the folder contents along with the folder. This deletes all subfolders recursively.
C:>rmdir /S nonemptydir nonemptydir, Are you sure (Y/N)? y C:>
Force delete a folder without confirmation
To force delete directory, without being asked for confirmation, we can use /Q switch.
rmdir /Q /S nonemptydir
We can also use ‘rd’ in place of ‘rmdir‘. Both names refer to the same command. This command works on Windows 2000, Windows XP, Server 2003, Vista, Windows 7 and 10.
Deleting directory with white spaces in the name
Rmdir
can delete files with whitespaces in the name, you just need to wrap up the folder name in double quotes as shown in the below example.
rmdir /Q /S "folder with spaces in the name"
Delete contents of a directory but keep the directory
The usecase here is to delete all the contents of the directory but keep the parent directory so that we do not need to create it again. rmdir /Q /S
does not work here as it deletes the parent directory too. Rather the below commands should do the trick.
forfiles /P directory_path /M * /C "cmd /c if @isdir==FALSE del @file" forfiles /P directory_path /M * /C "cmd /c if @isdir==TRUE rmdir /S /Q @file"
This works in 2 steps – the first command deletes all files, whereas the second one deletes all subdirectories.
Errors
To delete a directory, you should have appropriate access permissions on the directory. Otherwise rmdir throws ‘Access denied’ error.
Содержание
- Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- Re: Рекурсивное удаление каталога
- 10 примеров команды ‘rm’ для начинающих
- Пример #1: Удаление файла
- Пример #2: Интерактивное удаление файлов
- Пример #3: Удаление пустой директории
- Пример #4: Рекурсивное удаление директорий
- Пример #5: Удаление файлов и подкаталогов интерактивно
- Пример #6: Принудительное удаление файлов
- Пример #7: Проверка при удалении более 3 файлов или рекурсивном удаление
- Пример #8: Регулярные выражения в команде rm
- Пример #9: Удаление большого количества файлов
- Пример #10: Удаление файлов, начинающихся с дефиса (-)
- Удаление файлов или папок рекурсивно на Windows CMD
- 12 ответов
- Используйте команду Windows rmdir
- Похожие вопросы:
- Вадим Стеркин
- Скрипты
- PowerShell
- Выполнение очистки по расписанию
- Готовые файлы
- Благодарности
- Об авторе
- Вас также может заинтересовать:
- Я в Telegram
- комментариев 75
Рекурсивное удаление каталога
Re: Рекурсивное удаление каталога
эээ. пардон, алгоритм чего именно? построения дерева 😕
Re: Рекурсивное удаление каталога
ну да
надо же сначала очистить каталог и прибить файлы
Re: Рекурсивное удаление каталога
Re: Рекурсивное удаление каталога
Re: Рекурсивное удаление каталога
Re: Рекурсивное удаление каталога
Категорически рекомендуется сделать две вещи:
1. добавить в условие ‘имя ne «.» && имя ne «..»‘
2. вместо реальных вызовов unlink/rmdir поставить printf(«unlink(%s)»)
Re: Рекурсивное удаление каталога
> Категорически рекомендуется сделать две вещи:
> 1. добавить в условие ‘имя ne «.» && имя ne «..»‘
> 2. вместо реальных вызовов unlink/rmdir поставить printf(«unlink(%s)»)
Re: Рекурсивное удаление каталога
3. еще аккуратненько нужно с символическими ссылками
Re: Рекурсивное удаление каталога
Вобще еще есть такая штука как «info libc», там описывается функция ftw(), с опциями FTW_DEPTH и FTW_PHYS эта функиця даст нужный результат. Хотя иногда лучше не использовать готовые библиотечные решения.
Re: Рекурсивное удаление каталога
> Ща тебе ещё вилфред на перле сообразит наверное
Re: Рекурсивное удаление каталога
убить_каталог(каталог)
<
открыть каталог
по всем файлам(имена)
<
если каталог(имя)
убить_каталог(имя)
иначе
unlink(имя)
>
закрыть каталог
rmdir(каталог)
>
И при развесистой иерархии файловой системы, ты нагребешь кучу открытых дескрипторов каталогов.
Вобщем, хреновая практика написания подобных вещей. не энтерпрайз.
Re: Рекурсивное удаление каталога
> И при развесистой иерархии файловой системы, ты нагребешь кучу открытых дескрипторов каталогов.
Re: Рекурсивное удаление каталога
> И при развесистой иерархии файловой системы, ты нагребешь кучу открытых дескрипторов каталогов. Вобщем, хреновая практика написания подобных вещей. не энтерпрайз.
Re: Рекурсивное удаление каталога
> И при развесистой иерархии файловой системы, ты нагребешь кучу открытых дескрипторов каталогов.
на каждом уровне вложенности только один дескриптор открывается, т.е. если у тебя 1000 вложенных друг в друга каталогов, то это плохо
Re: Рекурсивное удаление каталога
Re: Рекурсивное удаление каталога
Ну если уж пишется действительно что то нужное, то может проще взять исходники команды rm и скопировать соответствующие подпрограммы. Инчае зачем нужен GPL, если не копировать куски исходного текста :).
Потому что если поковыряться в исходых текстах rm, то, например, там есть такое, что lstat() вызывается дважды, до смены каталога и после (на текущий каталог), и сравниваются полученные номера инодов.
Re: Рекурсивное удаление каталога
> зачем нужен GPL, если не копировать куски исходного текста
Re: Рекурсивное удаление каталога
Хватит учить детей анонизму
Re: Рекурсивное удаление каталога
Не юниксвэй. А вы слуайно не быдлокодер, я извиняюсь?
Re: Рекурсивное удаление каталога
> Не юниксвэй. А вы слуайно не быдлокодер, я извиняюсь?
Re: Рекурсивное удаление каталога
> Ну если уж пишется действительно что то нужное, то может проще взять исходники команды rm и
Источник
10 примеров команды ‘rm’ для начинающих
rm означает «remove», как следует из названия, команда rm используется для удаления файлов и каталогов в UNIX-подобной операционной системе. Если вы новичок в Linux, вы должны быть очень осторожны при запуске команды rm, потому что, как только вы удалите файлы, вы не сможете восстановить содержимое файлов и каталогов. Хотя есть некоторые инструменты и команды, с помощью которых можно восстановить удаленные файлы, но для этого вам нужны экспертные навыки.
В этом посте я продемонстрирую 10 примеров команд Linux rm. Ниже приведен основной синтаксис команды rm.
Пример #1: Удаление файла
Давайте удалим файл с именем «linuxstufff.log»
Удаление нескольких файлов одновременно.
Давайте предположим, что я хочу удалить четыре текстовых файла одновременно. Используйте приведенный ниже синтаксис.
Пример #2: Интерактивное удаление файлов
Параметр ‘-i‘ спрашивает разрешение перед удалением, как показано ниже.
Пример #3: Удаление пустой директории
Используйте опцию «-d» для удаления пустой папки.
Вы также можете использовать команду ‘rmdir‘ для удаления пустых папок.
Пример #4: Рекурсивное удаление директорий
Команде rm вместе параметром ‘-r‘ рекурсивно удалит все файлы и подкаталогов в родительской директории.
Пример #5: Удаление файлов и подкаталогов интерактивно
Используйте опцию ‘-ri‘ в команде rm для интерактивного удаления файлов и подкаталогов.
Пример #6: Принудительное удаление файлов
Параметр ‘-f‘ в команде rm принудительно удаляет файлы независимо от их прав доступа, а также игнорирует несуществующие файлы.
Давайте удалим защищенный от записи файл ‘tech.txt’
Как мы видим выше, когда мы пытаемся удалить файл, защищенный от записи, с помощью команды rm без опции ‘-f‘, выходит предупреждение.
Теперь попробуйте удалить файл, используя опцию ‘-f‘.
Также попробуем удалить несуществующий файл.
Примечание: опция -f не будет работать для каталогов, защищенных от записи.
Давайте рассмотрим пример, каталог ‘home/home/mordeniuss/location/protected‘ защищен от записи, а файл ‘db_stuff‘ внутри этого каталога нет.
Пример #7: Проверка при удалении более 3 файлов или рекурсивном удаление
Параметр ‘-I‘ в команде rm перед удалением более трех файлов или рекурсивным удалением запрашивает подтверждение.
Предположим, я хочу удалить все файлы журнала, которые начинаются с имени «app» в каталоге «linux_store».
Пример #8: Регулярные выражения в команде rm
Мы можем использовать регулярные выражения в команде rm, некоторые примеры показаны ниже:
Давайте удалим 5 файлов журнала, начиная с log1 до log5 в каталоге ‘linux_store‘.
Удалим все файлы в данной директории, которые заканчиваются на ‘.txt‘
Удалим все файлы в текущем каталоге, которые имеют три символа в расширение.
Пример #9: Удаление большого количества файлов
Если вы пытаетесь удалить большое количество файлов с помощью команды rm, вы получите сообщение об ошибке
‘Argument list too long‘ (Список аргументов слишком длинный)
В приведенном ниже примере я пытаюсь удалить все файлы (около 300001) каталога ‘/home/mordeniuss/linux_store‘ сразу.
Чтобы решить эту проблему, используйте команду:
Пример #10: Удаление файлов, начинающихся с дефиса (-)
Давайте предположим, что у нас есть файл с именем ‘-store‘ в нашем текущем каталоге, и мы хотим удалить этот файл.
Удалить этот файл можно с помощью команд ниже.
Источник
Удаление файлов или папок рекурсивно на Windows CMD
Как рекурсивно удалить файлы или папки на Windows из командной строки?
Я нашел это решение, где путь мы приводим в командной строке и запускаем эту команду.
12 ответов
Я работал над программой пометки для своего компьютера. Мне нужна возможность передать список файлов или папок в explorer (или что-то подобное), чтобы отобразить их и иметь возможность манипулировать ими так же, как вы сделали бы это с представлением папок в Windows. Я уже написал программное.
Пожалуйста, выполните следующие действия:
Дайте следующую команду
Другие ответы не сработали для меня, но это сработало:
/q отключает запрос Да / нет
/s означает удаление файла(ов) из всех подкаталогов.
Вы можете использовать это в сценарии bat :
Теперь просто измените c:\folder a на местоположение вашей папки. Цитата нужна только в том случае, если имя вашей папки содержит пробелы.
Мне было поручено разработать модуль, который требует от меня получить координаты файлов в Windows Explorer. Вот пример использования: Моя программа открывает Windows Explorer в определенную папку (например, C:\FavoriteVideo). Пользователь делает свое расположение всех файлов и папок. Существует.
Мне было интересно, есть ли способ создать несколько папок из документа TXT в windows PowerShell или CMD? У меня есть файл TXT, полный номеров чертежей, таких как 5614-E-1459_SH 1 (за исключением их примерно 500 сотен). Из-за политики на моей работе я не могу вслух использовать стороннее.
Обратите внимание, что вам будет предложено удалить папку «C:\tmp». Объединение его с переключателем /Q приведет к удалению папки беззвучно (например, RMDIR «C:\tmp» /S /Q )
Даже для локального каталога мы можем использовать его как:
Если вы хотите удалить определенное расширение рекурсивно, используйте это:
Вы тоже могли бы это сделать:
/p будет запрашивать вас для каждого найденного файла, если вы нервничаете из-за удаления чего-то, что вам не следует удалять.
Используйте команду Windows rmdir
То есть rmdir /S /Q C:\Temp
Я также использую те, что ниже, уже несколько лет, безупречно.
Проверьте другие варианты с помощью: forfiles /?
Удалять кв. м./телеметрии в папку windows рекурсивно
Удаление windows TMP файлов рекурсивно
Удалить пользователя TEMP файлы и папки рекурсивно
Для полного стирания папки с собственными командами и получения журнала о том, что было сделано.
вот необычный способ сделать это :
давайте предположим, что мы хотим очистить d:\temp dir
Для скрытых файлов мне пришлось использовать следующее:
Похожие вопросы:
Мне нужно рекурсивно скопировать набор файлов DLL и PDB из набора папок в другую папку. Я не хочу воссоздавать иерархию папок в целевой папке. Я хочу использовать встроенные инструменты Windows.
Я собираюсь реализовать рекурсивное сравнение папок на python. Как вы думаете, какой алгоритм лучше всего подходит для этого? Получите два списка файлов для папок Отсортировать оба списка Сравните.
На Windows имена файлов, такие как com1.txt или lpt1.txt, запрещены. Есть ли список всех запрещенных имен файлов и папок на windows (или запрещенных символов в именах файлов и папок, таких как.
Я работал над программой пометки для своего компьютера. Мне нужна возможность передать список файлов или папок в explorer (или что-то подобное), чтобы отобразить их и иметь возможность.
Мне было поручено разработать модуль, который требует от меня получить координаты файлов в Windows Explorer. Вот пример использования: Моя программа открывает Windows Explorer в определенную папку.
Мне было интересно, есть ли способ создать несколько папок из документа TXT в windows PowerShell или CMD? У меня есть файл TXT, полный номеров чертежей, таких как 5614-E-1459_SH 1 (за исключением их.
У меня есть несколько файлов на машине windows(каталог d:/test/temp/). Для некоторых файлов у меня есть разрешение только на чтение. Для удаления файлов / папок в вышеприведенном каталоге я.
Я попытался изменить разрешения файлов/папок на Томе с Docker windows. Но разрешения неожиданно не меняются. Окружающая среда: Хост: Windows 10 Pro Docker версия 17.09.0-ce, сборка afdb6d4 Шаг к.
Источник
Вадим Стеркин
Как вы удаляете временные файлы? Вручную запускаете CCleaner или аналогичную программу, либо настроили ее запуск по расписанию? Я обхожусь встроенными средствами Windows, причем все сводится буквально к одной команде. Я хочу поделиться с вами двумя скриптами, которые давно служат мне верой и правдой для удаления ненужных файлов.
В Windows есть утилита для очистки диска, которую можно настроить для удаления заданных категорий файлов по расписанию. Она легко справится с очисткой временных файлов из расположений, известных системе, но не позволит удалять ненужные файлы из заданной вами папки. С помощью скриптов можно очищать не только временные файлы, но и любую папку. Например, я удаляю файлы из папок Test и Temp, которые служат для экспериментов и временного хранения файлов как в загрузках, так и документах.
В отличие от программных чистильщиков, скрипты можно гибко настроить, а регулярность выполнения очистки легко реализовать с помощью планировщика заданий Windows.
Эти скрипты позволяют удалять только файлы заданного «возраста» вместо полной очистки папки.
В статье вы найдете примеры скриптов и рассказ о том, как настроить задачу в планировщике одной командой. Вы также сможете скачать готовые файлы и создать задание для очистки папок за пару минут.
Скрипты
Вы можете воспользоваться на выбор скриптами CMD, VBS и PowerShell.
Можно использовать утилиту командной строки forfiles.exe, входящую в состав Windows 7 и новее (когда-то она входила в Windows 2000 Resource Kit). Одной командой удаляются все файлы из указанной папки и вложенных в нее.
Команда для выполнения
Конечно, в скрипте вы можете использовать несколько команд, каждая из которых будет удалять заданную папку. Справка по использованию утилиты вызывается командой forfiles /?.
Приведенный ниже скрипт VBS удаляет все файлы и папки, включая защищенные, с выводом списка удаленных файлов.
Команда для выполнения
Скрипт можно запускать из командного файла (CMD).
Как и в случае с утилитой forefiles.exe, можно реализовать очистку различных папок, указав каждую в отдельной команде.
PowerShell
Скрипт на PowerShell был в блоге Сергея Мариничева в рамках урока об операциях с файлами, но теперь страница доступна только в архиве интернета. Я скопировал ключевое содержимое для вас:
Выполнение очистки по расписанию
Для выполнения очистки папки по расписанию нужно создать скрипт с именем cleanup.cmd, содержащий команду для запуска, и скопировать его в любую папку из PATH (например, %windir%\system32). Поместите туда же скрипт VBS или PowerShell, если вы решили использовать его, а не утилиту forfiles.ехе.
Задание в планировщике создается одной командой:
Задание с именем CleanUp будет выполняться:
Откройте Пуск – Поиск – Планировщик заданий и вы увидите в библиотеке планировщика задание CleanUp.
Можете проверить работу задания в планировщике. Для этого щелкните правой кнопкой мыши по заданию и выберите Выполнить.
Готовые файлы
Загрузите архив и распакуйте в любую папку. В архиве варианты forfiles и VBS.
Благодарности
Авторами скриптов, которые я когда-то почерпнул из этой темы конференции OSZone, являются Keeper2006 и amel27 соответственно. В этой же теме вы найдете другие интересные варианты решения данной задачи, и туда же следует направлять вопросы по доработке скриптов под свои нужды.
А как вы избавляетесь от ненужных файлов – программой или скриптом? Настроена ли у вас очистка по расписанию?
Об авторе
Вас также может заинтересовать:
Я в Telegram
Подпишитесь на канал и читайте интересные записи чаще! Есть вопросы? Задайте их в чате.
комментариев 75
Великолепно! Взял на вооружение. Сам чищу по расписанию планировщика заданий следующим скриптом:
Спасибо за статью. Заинтересовала. Я удаляю с помощью ccleaner. Но ваш метод мне тоже понравился. Обязательно попробую. Много нового узнаю из вашего блога, но проблема в том, что обычный пользователь не будет заниматься настройкой. Я помню, когда я научилась содержать компьютер «в чистоте» и операционная система протянула год без глюков и без переустановки, это меня очень удивило.
equinox, я рад, что вам понравился скрипт. Как вижу, вы использовали похожий метод, но удаляли все целиком. Поскольку я часто открываю файлы без сохранения, они оседают во временных папках. И я предпочитаю иметь двухнедельную подушку, на случай, если они понадобятся.
Юлиана, CCleaner тоже можно запускать по расписанию с текущим набором настроек. Достаточно закинуть в планировщик команду: ccleaner.exe /auto. Конечно, нужно прописать путь к исполняемому файлу программы.
Юлиана: Много нового узнаю из вашего блога, но проблема в том, что обычный пользователь не будет заниматься настройкой. »
Мне очень приятно, что вы узнаете много нового из моего блога 🙂 Что же касается обычных пользователей, то мой блог не для них. Он для необычных людей, которые стремятся узнать что-то новое о Windows и расширить свой кругозор 🙂
Интересный вариант очистки, я пользовался CMD
На который в групповых политиках запланировано выполнение при выходе из системы. Ваш скрипт заинтересовал расширенными возможностями. Спасибо.
Спасибо. Давно ищу метод очистки дисков от временных файлов на ПК в домене. Этот вопрос пока не гуглил, а можно ли создавать задания в планировщике через GPO? Тогда можно использовать один из этих скриптов или ccleaner с ключом /auto.
IWS, это то же самое, что у equinox, просто код слегка другой.
did5: а можно ли создавать задания в планировщике через GPO? »
А зачем? Поставьте в качестве логон/логофф скрипта и все.
после чего скопируйте все содержимое папки в %windir%\system32.
Антон Плескановский, вы проверили и у вас не работает, или вы теоретизируете?
В schedule.cmd действительно написано
Но там нет слэша в конце, а это значит, что будет выполнен исполняемый файл с именем cleanup вне зависимости от его расширения.
Проверьте сами. Положите в System32 файл cleanup.bat
и выполните в командной строке
Да, все верно — со слэшем не доглядел.
Хотя скрипт чистит в папке Temp пользователя далеко не все файлы 😉
А так в принципе концепт чистки рабочий, это я недоглядел — каюсь.
Удачи Вам и новых интересных публикаций.
Антон Плескановский: Хотя скрипт чистит в папке Temp пользователя далеко не все файлы 😉 »
Возможно, они младше двух недель, ибо этот параметр задан в скрипте.
Спасибо за теплые пожелания! 🙂
осталось только добавить что в пакете sysinternals есть маленькая утилита sdelete помогающая безвозвратно удалять файлы.
SERG, для очистки временных файлов sdelete не нужна. Это, скорее, для укрепления конфиденциальности, что в домашних условиях не особо востребовано.
Спасибо, взял на вооружение.
Хотелось бы узнать как можно настроить планировщик, что бы задание выполнялось при выключении или выходе из системы пользователя.
Вадим, спасибо!
У меня ноут от НР, и для его обслуживания есть своя прога — HP Support Assistent. Вот она, как я понял и использует вхходящие в Windows 7 утилиты.
А так попробую использовать в ручную ваши советы.
K1RZA, если честно, я не вижу смысла в такой частой очистке временных файлов — при каждом выходе или выключении системы.
Но если очень хочется, настройте запуск задания по событию. Выход из системы — это 4647 в журнале Безопасность. выключение — событие 200 в журнале Diagnostics-Performance (о котором в блоге написано достаточно :).
Андрей, фирменные утилиты — это хорошо, если знаешь, что конкретно они делают 🙂
Спасибо!
взял на вооружение. Но только добавил не в планировщик, а сделал ярлычок в Total CMD, поместив рядом с VBS для создания папки с именем даты и новым текстовиком)
Очень рад, что зайдя на OSZONE, я увидел ссылку сюда. Хороший блог, хоть многое и знакомо, но нравится как вы объясняете. Спасибо за труд!
Алексей, спасибо за добрые слова о блоге 🙂
Что касается вашего вопроса про bak-файлы, то:
1. Определите список папок, в которых они создаются
2. Выполняйте для каждой папки команду forefiles.exe с ключом /m *.bak
Практически уже ничего не чищу. Поскольку всё временное находится в стандартных расположениях, раз в полгода захожу во встроенную очистку диска (за это время успевает скопиться 2,5-4GB мусора), удаляю.
Почему не чищу с фанатизмом? Всё предельно просто. HDD распределялся таким образом, чтобы на системном разделе оставался приличный запас свободного места. 4GB мусора никак на скорость работы не влияют.
Morpheus, прямой зависимости между скоростью работы и наличием временных файлов нет. Но есть другие факторы, по которым я не считаю нужным держать на диске по 2-4 Гб мусора на протяжении полугода.
Для оптимальной производительности HDD нужно дефрагментировать, и чем больше мусора, тем дольше проходит этот процесс. Да, в Windows 7 он выполняется в фоне, поэтому незаметен. Однако дефрагментация этих файлов создает ненужную нагрузку на HDD, что теоретически сокращает его срок службы.
Да и вообще, зачем гонять мусор по диску, если его можно удалить 🙂
Vadim Sterkin, справедливо, но это мизер. Наличие мусора при дефрагментации значительно меньше влияет на срок службы, чем сама дефрагментация 🙂
Подскажите, как удалять файлы из директории с исключением?
Пример:
Надо удалить все файлы и папки кроме одной папки.
Станислав, обратитесь к специалистам по скриптам — ссылка на тему форума в конце статьи.
ППц.
Это не решение проблемы.
Во первых скрипт это фаил а значит он должен гдето лежать куда пользователь должен иметь доступ.
Во вторых в папку windir\temp орбычный юзер даже доступ может не имеет, ибо у него есть свой темп который лежит в %temp%.
В 3 папку %temp% планировщиком не очистить ибо планировщик выполняет задачи от имени, а не для текущего пользователя(вы же понимаете что у каждого юзера папка %temp% своя), тоесть запускать скрипт нуно во время Логона(ЛогОффа).
Вот раборчий вариант.
Просто добавить в групповые политики в пункт User Configuration\Police\Windows Settings\Scripts\LogOn
Рабаотет для XP и 7(для всех NT5 и NT6)
Ну вы блин даётё: ППц.
Это не решение проблемы. »
Какой проблемы? Скрипт полностью справляется с задачей, отраженной в заголовке и содержании статьи.
Судя по вашему недовольству, вы примеряли его к корпоративной среде. Я пишу для домашних пользователей, если вы этого не заметили. Впрочем, ничто не мешает использовать скрипт в организации, задействовав функционал скриптов входа/выхода из системы. Это — методы выполнения скрипта, но к содержимому скрипта они отношения не имеют.
Ну вы блин даётё: Во первых скрипт это фаил а значит он должен гдето лежать куда пользователь должен иметь доступ. »
То же самое можно сказать и про ваш скрипт 🙂
Ну вы блин даётё: Во вторых в папку windir\temp орбычный юзер даже доступ может не имеет, ибо у него есть свой темп который лежит в %temp%. »
В статье не было ничего сказано про %WinDir%\Temp, но при запуске из планировщика с максимальными правами все будет работать, если пользователь обладает правами админа.
Ну вы блин даётё: Вот раборчий вариант. »
Я не буду писать о столь примитивных командах как rd и del 🙂 Ну а вы упустили главную соль скрипта — отсечку по дате.
Подскажите, каким образом можно соблюсти требования http://support.microsoft.com/kb/956324
%AllUsersProfile%\Application Data\Microsoft\Dr Watson
%Windir%\minidump
%SystemRoot%\Memory.dmp
1.Удалить только те %Windir%/$NtUninstallКБ Номер$-папки, созданные более месяца назад, как создать резервную копию файлы обновлений Windows. Не следует удалять те, которые были созданы за последние 30 дней.
2.Чтобы удалить кэш загрузки обновлений Windows, удалите все папки в папке %Windir%\SoftwareDistribution\download, которые были создано более 10 дней назад.
3.Удалите следующие файлы журнала в папке % Windir %:
KB*.log
Setup*.log
Setup*.old
SetupLog.txt
файле Winnt32.log
SET*.tmp
1.Удалите папку %Windir%\$NtServicePackUninstall$ на Удалите папки резервного копирования для пакетов обновления для Windows XP.
2.Удалить папку % windir%\ServicePackFiles для удаления установочные файлы и папки кэша для службы Windows XP пакеты обновления.
Нашёл вас через oszone
А так же, как удалить всё из папки профиля пользователей, работающих за 1 пк файлы по маске и старше n дней из заданной папки или удалить папку по маске и старше n дней, пример: удалить всё для пользователь1 и пользователь2 из C:\Documents and Settings\пользователь1\del\*.* и C:\Documents and Settings\пользователь2\del\*.* или саму папку del (маска), если она старше n дней, выполять надо в не зависимости от того, какой пользователь работает с пк?
В конце записи есть ссылка на тему в форуме по скриптам, обратитесь туда, плиз.
Вадим, а можно в этом запросе
сделать так чтобы оставалась 1 (последняя) копия не зависимо от даты. Это мне нужно, на случай сбоя резервного копирования т.к. этой командой я удаляю старые резервные копии.
Андрей, в статье есть ссылка на тему форума — там помогут.
А русский работает?
пробую
cscript //Nologo MyCleanUp.VBS 4 «c:\Мои» >MyCleanupScript.Log
не работает, а если переименовать в «moi» — ok. Беда в том что нужно именно эту папку чистить
Андрей, я понятия не имею, как в VBS обрабатываются пути с кириллицей. Спросите в указанной теме форума.
Но ничто не мешает вам использовать forfiles, сохранив скрипт в кодировке OEM.
Это все понятно, а вот можно изменит скриптом адрес который находится по умолчанию в %TEMP% например на D:\temp
Я рад, что вам все понятно. Поиск в блоге по запросу «переменные среды» привел бы вас сюда. TEMP/TMP меняются примерно так же, как и пользовательская PATH.
А можно в данный скрипт внести изменении чтобы не удалялись пара каталогов с данными из этой папки?
Точнее, произвожу очистку папки данным скриптом, в папке есть пара папок которые оттуда перенести нельзя,можно ли видоизменить скрипт таким образом,чтобы при срабатывании он их не трогал,заранее спасибо за ответ…
Денис, см. раздел «Благодарности» в конце записи.
Vadim Sterkin,
Спасибо. Не обратил внимания.
Сергей, а что конкретно вы сделали, что у вас ничего не получается?
Vadim Sterkin,
Сергей, слэши в путях неправильные. C:\users\ надо.
Вячеслав, очевидно, надо запускать какой-то скрипт на сервере, на котором крутится ваш сайт 🙂
Vadim Sterkin: Вячеслав, очевидно, надо запускать какой-то скрипт на сервере, на котором крутится ваш сайт 🙂
»
Вячеслав, как я могу советовать скрипт, если я даже не знаю ОС, под управлением которой работает сервер? 🙂 Для Windows вы скрипт уже знаете, гуд лак!
Потестировал предложенные скрипты. Файлы удаляет на УРА! Проблема с удалением вложенных папок в папке Temp. То есть в самих папка файлы стираются, а вот сами папки остаются. Как это можно исправить, подскажите пожалуйста.
Вадим, спасибо за оперативность!
rd удаляет вместе с самой указанной папкой TEMP. Нужное удалять только все содержимое этой папки. А внутри папки temp — могут быть другие папки со случайными именами.
Антон, даже если вы не владеете CMD, можно погуглить
Можно запуск скрипта предварять start /min …
Vadim Sterkin,
Использую данную команду для автоматического удаления файлов внутри своей временной папки. Удаляет хорошо, однако после работы основной программы остается не только файл temp но и log. Расширения нет и данный скрипт на нем спотыкается. Как обойти?
Заранее спасибо.
1. Я не телепат, поэтому не знаю, какую «данную» команду вы используете.
2. В конце записи есть ссылка на тему форума.
Вадим, речь идет об команде:
Vadim Sterkin: FOR /D %%p IN («%Temp%\*.*») DO rmdir «%%p» /s /q
»
Сергей, речь о том, что запросы на изменение скрипта нужно направлять в форум.
Источник