Удалить все файлы с расширением c
Обновлено: 24.11.2024
Удаление файлов — одна из часто выполняемых операций из командной строки Windows. В этом посте объясняется, как использовать команду «del» из CMD для различных случаев использования, таких как удаление одного файла, массовое удаление файлов с использованием подстановочных знаков и т. д. Прежде чем мы начнем рассматривать синтаксис, обратите внимание, что команда работает только для файлов и может не обрабатывает папки.
Как удалить файл
Запустите команду del с именем удаляемого файла, все готово!
Вы не видите сообщения после выполнения команды, если файл успешно удален. Сообщение об ошибке отображается только тогда, когда что-то идет не так.
Групповое удаление файлов
Команда Del распознает подстановочный знак (*) и поэтому может использоваться для массового удаления файлов из CMD. Некоторые примеры ниже.
Чтобы удалить все файлы в текущей папке
Чтобы удалить все файлы с расширением log
Удалить все файлы с префиксом 'abc'
Удалите все файлы, содержащие «PIC» в имени файла.
Выше приведены основные варианты использования команды del. Продолжайте читать ниже для нетривиальных вариантов использования.
Удалить несколько файлов
Команда Del может принимать в качестве аргумента несколько файлов
Удалить файлы только для чтения
Мы не можем удалить файл, доступный только для чтения, с помощью простой команды del. В этом сценарии мы получаем ошибку отказа в доступе.
Файл только для чтения можно удалить, добавив флаг /F.
В качестве альтернативы мы также можем использовать приведенную ниже команду
Есть ли какая-либо пакетная команда для удаления всех файлов размером с ноль байтов из cmd.
Рекурсивно перебирать файлы:
for /r %F in (*)
Найти файлы нулевой длины:
if %~zF==0
Удалить их:
del «%F»
Собираем все вместе:
for /r %F in (*) do if %~zF==0 del «%F»
Если вам нужно это в пакетном файле, вам нужно удвоить %:
для /r %%F в (*) сделать, если %%~zF==0 del "%%F"
Существует способ удалить папки из командной строки, используя «RD» (удалить каталог), и у него есть пара переключателей без вывода сообщений: «RD /S /QC:/Directory» удалит C:/Directory без вывода сообщений, Я использую это все время. Я думаю, что путь к каталогу должен быть в кавычках, если он содержит пробелы.
UAC может захотеть бороться с удалением файлов, в этом случае команда «takeown», чтобы сначала дать вам право собственности на файл, должна обойти это.
Иногда мы получаем сообщение об ошибке, когда пытаемся удалить файл или папку без причины, но, конечно, причина есть. У нас есть много поврежденных файлов или заблокированных файлов. Не беспокойтесь, если мы хотим удалить файлы ошибок или слишком длинные файлы пути из нашей системы, здесь я предлагаю более плавный путь. Так что используйте программное обеспечение «Long path tool» и берегите себя.
Молодец, я использовал это, когда удалял *1*.*
Оставлю это в своем справочнике. Большое спасибо!
Есть ли способ исключить из удаления имена файлов, соответствующие шаблону? Например, я хочу удалить все файлы, кроме тех, чьи имена похожи на *xyz*
Я пытаюсь удалить файлы csv в DOS, которые имеют суффикс даты
более ранний, чем 2 месяца назад. Мне нужно сделать это динамически, из пакетного файла.
Возможно ли это? Большое спасибо.
Бетани
Я хочу удалить файл из всех профилей пользователя с помощью cmd.
Файл находится на рабочем столе.
Имя файла-Hello My Name
Я пишу del %PUBLIC%\Desktop\Hello*My*Name.pdf, но это не работает.
Я также попробовал del %PUBLIC%\Desktop\*Hello*, но это тоже не сработало.
Любая помощь приветствуется
<р>в. Используя цикл for, создайте 5 текстовых файлов, начинающихся с буквы a (например, a1, a2, a3, a4, a5).Вы можете помочь мне
создать 5 файлов, подобных этой команде.
для /l %a в (1 1 5) сделать mkdir File%a.
Вы когда-нибудь сталкивались с проблемой невозможности удалить файл или папку из-за недопустимого имени файла. Я использовал инструмент «Длинный путь», чтобы исправить это
Если у файла есть расширение, оно, скорее всего, обязательно. Если вы хотите удалить расширение файла, потому что хотите, чтобы оно было скрыто, используйте Windows, чтобы скрыть расширения файлов. Справку по сокрытию и отображению расширений файлов см. в статье Как просмотреть расширение компьютерного файла.
Расширение файла является частью имени файла и может быть удалено путем переименования файла. Ниже приведены шаги и примеры того, как удалить расширение файла для каждой из операционных систем.
Пользователи Windows
Прежде чем расширение файла можно будет удалить, необходимо включить отображение расширений файлов. По умолчанию этот параметр отключен.
Предполагая, что файл называется myfile.txt, мы удаляем его расширение, выполнив следующие действия.
-
файл (а не ярлык).
- Выберите в меню «Переименовать».
- Удалите .txt из myfile.txt и нажмите Enter .
- Нажмите «Да» в предупреждении о том, что файл становится непригодным для использования, если вы уверены, что хотите удалить расширение имени файла.
Удаление нескольких расширений файлов
Если вы хотите удалить расширения нескольких файлов, мы рекомендуем вам войти в командную строку Windows и выполнить следующие действия.
Пользователи командной строки MS-DOS и Windows
Измените каталог на место, где находится файл. В приведенном ниже примере мы переименовываем файл «myfile.txt» в «myfile», чтобы удалить расширение файла.
Если файл уже не существует, вы не получите сообщение или сообщение "ОК", указывающее, что файл был переименован, а расширение файла было удалено.
- Дополнительную информацию об этой команде см. на странице команды перемещения.
Удалить несколько расширений файлов
Чтобы удалить расширение всех файлов с таким же расширением, выполните следующие действия.
В приведенном ниже примере мы удаляем расширение файла для всех файлов в текущем каталоге, которые заканчиваются на .txt.
В нашем примере мы используем звездочку в качестве подстановочного знака, который сообщает командной строке, что нам нужны все имена файлов.
Пользователи Unix и Linux
В Unix-подобных операционных системах, таких как Linux, вы можете использовать команду mv для переименования отдельного файла или каталога.
Чтобы переименовать несколько файлов, вы можете использовать утилиту переименования.
Чтобы рекурсивно переименовать файлы в подкаталогах, вы можете использовать команды find и rename вместе.
Переименовать один файл или каталог
Измените каталог на место, где находится файл. В нашем примере ниже мы удаляем расширение файла «myfile.txt». Кроме того, этот пример выполняется из оболочки, а не через графический интерфейс.
Если операция прошла успешно, вы вернетесь в командную строку.
- Дополнительную информацию об этой команде см. на странице команды mv.
Переименовать несколько файлов
Чтобы переименовать несколько файлов, используйте утилиту переименования. В большинстве систем он не установлен по умолчанию, но его можно установить с помощью диспетчера пакетов. В Ubuntu, Debian или Linux Mint его можно установить с помощью apt.
Общий синтаксис команды переименования следующий.
Параметр regexp – это регулярное выражение Perl. Для замены текста используйте форму регулярного выражения 's/pattern1/pattern2/'.
Параметр files указывает, какие файлы обрабатываются командой. Вы можете указать список файлов или подстановочный знак, который будет расширен оболочкой. Подстановочный знак * указывает на все файлы.
Полезные параметры включают -n (показать, какие изменения будут сделаны, но ничего не изменить), -v (показать подробный вывод) и -f (принудительно перезаписать новые файлы, если они существуют).
Например, если вы хотите удалить расширение .txt из всех файлов в текущем каталоге, вы можете выполнить следующую команду.
В приведенной выше команде параметр regexp заключен в одинарные кавычки, чтобы "защитить" строку от ее интерпретации оболочкой. Он буквально передается команде переименования.
В регулярном выражении шаблон1 — это расширение файла .txt, а шаблон2 — пустая строка, указывающая, что шаблон1 следует заменить ни с чем.
Обратная косая черта — это управляющий символ, означающий "обрабатывать следующий символ буквально". Точка должна быть экранирована, потому что, если она не экранирована, она интерпретируется переименованием как метасимвол регулярного выражения, который соответствует любому символу.
Опция -n выполняет пробный запуск, показывая, какие изменения будут внесены, но ничего не изменяя. Вывод приведенной выше команды будет выглядеть следующим образом:
Если новые имена файлов выглядят правильно, вы можете снова запустить ту же команду без параметра -n для выполнения переименования. Укажите -v, если хотите увидеть, какие файлы переименовываются.
- Дополнительную информацию об этой команде см. на странице команды rename.
Переименовать несколько файлов, включая подкаталоги
Чтобы переименовать файлы, в том числе находящиеся в подкаталогах, используйте команду find и направьте ее вывод на переименование, которое обрабатывает список найденных файлов.
Например, чтобы удалить расширение .txt из всех файлов в текущем каталоге и во всех подкаталогах, выполните следующую команду.
Приведенная выше команда говорит: «Рекурсивно найти все файлы в текущем каталоге и его подкаталогах, имена которых заканчиваются на .txt. Передайте эти имена файлов команде rename и замените .txt ничем». Его вывод будет выглядеть следующим образом.
В этом посте я покажу, как легко удалить ненужные файлы в папке или подпапках на основе их расширения и атрибута. Вы даже можете автоматизировать этот процесс с помощью Планировщика заданий для регулярной очистки.
Прежде чем начать, обратите внимание, что файлы, удаленные из командной строки, удаляются навсегда, что означает, что удаленные файлы не сохраняются в корзине.
Удалить файл определенного типа из папки и ее подпапок
Эта команда удалит все EXE (исполняемые) файлы в указанном каталоге и его подкаталогах. Параметры /S проверяются внутри подкаталогов, а /Q удаляет файлы без запроса.
Удалить все файлы внутри папки и подпапок
Эта команда полезна, если вы хотите удалить все файлы в каталоге и его подкаталогах. Расширение файла здесь не проверяется.
Удалить файлы по атрибуту
Предположим, вы хотите удалить файлы с определенным атрибутом, вы можете сделать это с помощью этой команды:
Это удалит все файлы с атрибутом "Только для чтения".
Список атрибутов Windows:
- R : файлы только для чтения.
- S: системные файлы.
- H : скрытые файлы
- A : Файлы готовы к архивированию.
- I : файлы, не проиндексированные по содержимому
- L : точки повторной обработки
Удалить файлы, не имеющие определенного атрибута
Эта команда позволяет исключить файлы с определенным атрибутом. Это может быть удобно, например, если вы не хотите удалять файлы с системным атрибутом.
Удалить все подпапки и их содержимое
Это быстрая команда, которая рекурсивно удалит все подкаталоги.
Автоматическое удаление
Используя планировщик задач Windows, вы можете запланировать запуск любой из приведенных выше команд удаления так часто, как вам нужно.
Поддержание свободного места на диске имеет решающее значение при управлении серверами и системами. Как администраторы, вы бы не хотели, чтобы вас застали врасплох в ситуации «диск заполнен». Чтобы убедиться, что вы в безопасности, вы должны научиться использовать PowerShell для удаления файлов!
В этой статье вы узнаете обо всех способах удаления файлов из вашей системы с помощью PowerShell.
Начнем!
Оглавление
Предпосылки
В этой статье представлены примеры использования PowerShell, и если вы планируете следовать ей, вам потребуется следующее.
- Компьютер под управлением Windows 10 или более поздней версии.
- Windows PowerShell 5.1 или PowerShell 7.0
- Редактор сценариев, например Visual Studio Code, Atom или Notepad++.
Использование команды Remove-Item для удаления файлов
Когда вам просто нужно использовать PowerShell для удаления файла, вы, вероятно, сразу узнаете о командлете Remove-Item. Этот командлет является стандартом де-факто для удаления файлов с помощью PowerShell.
Использование команды Remove-Item в сочетании с командлетом Get-ChildItem для чтения файлов и папок, а также мощного конвейера PowerShell может значительно упростить задачу.
Знаете ли вы, что командлет Remove-Item имеет псевдоним del ? При работе в PowerShell использование команды Remove-Item или del приведет к выполнению одной и той же команды.
Использование PowerShell для удаления файла
Первый наиболее полезный пример — самый простой, т. е. удаление одного файла. Чтобы удалить только один файл, вам нужно всего лишь использовать команду ниже. Приведенный ниже код удаляет файл C:\temp\random.txt.
Выполнение приведенного выше кода в PowerShell ничего не отобразит на экране, если только не возникнет ошибка.
Использование PowerShell для удаления всех файлов в папке
В этом примере приведенный ниже код удаляет все файлы в папке. Командлет Get-ChildItem нацелен на C:\temp с помощью параметра -Path. Параметр -File указывает, что единственным типом элементов, которые должны быть включены, являются файлы. Get-ChildItem игнорирует папки.
Вывод должен выглядеть так, как показано на скриншоте ниже.
Успешно удалены все файлы в папке
Использование PowerShell для рекурсивного удаления всех файлов
В предыдущем примере удалялись только файлы в папке C:\temp. Если вам нужно также удалить файлы внутри каждого подкаталога, вам нужно добавить переключатель -Recurse в командлет Get-ChildItem, чтобы получить все файлы рекурсивно.
Выполнение приведенного выше кода заставляет PowerShell просмотреть все вложенные папки и получить весь список файлов. Вывод ниже показывает, что код смог удалить файлы в верхней папке; однако не удалось получить файлы во вложенных папках.
Не удалось получить файлы во вложенных папках
Решение проблемы длинного пути
Ошибка, показанная выше, указывает на то, что PowerShell «не удалось найти часть пути». Эта ошибка указывает на то, что путь, который пытается получить командлет, не существует, что вводит в заблуждение. .
В данном случае ошибка возникла из-за того, что путь, который Get-ChildItem пытается прочитать, превышает максимальную длину пути, равную 260 символам.
Снимок экрана ниже показывает, что путь или каталог и его подкаталоги существуют, а один текстовый файл с именем InTooDeep.txt находится в самом нижнем подкаталоге. Комбинация всех символов, составляющих имена вложенных каталогов, создает проблему с длинным путем.
Вложенные каталоги, создающие длинное имя пути
В Windows PowerShell 5.1 есть решение проблемы с длинным путем. Обходной путь — использовать Unicode-версию пути. Вместо того, чтобы указывать такой путь — C:\temp, используйте версию Unicode, например, '\\?\C:\temp' для папок, расположенных локально, или '\\?\UNC\ \\Temp', если папка находится в пути UNC.
Используя приведенный выше модифицированный код, учитывающий длинное имя пути, приведенный ниже вывод показывает, что PowerShell успешно прочитал глубоко вложенное имя пути и удалил файл.
Удален файл с длинным путем
Обратите внимание, что проблема с длинным путем не затрагивает PowerShell 7.0. В PowerShell 7.0 нет необходимости использовать Unicode-версию пути, поскольку она уже имеет встроенную поддержку длинных имен путей.
Если папки также необходимо удалить, просто удалите параметр -File из командлета Get-ChildItem, и PowerShell удалит все элементы, включая файлы и папки.
Использование PowerShell для удаления файлов старше x дней
Другим типичным примером очистки дискового пространства является удаление файлов, возраст которых превышает определенное количество дней. Этот пример полезен для удаления старых файлов журналов, например файлов, созданных веб-серверами IIS, для освобождения места на диске.
В этом примере в c:\temp есть файлы старше 14 дней. С помощью приведенного ниже скрипта отображаются Name , CreationTIme и AgeInDays каждого файла в c:\temp.
Как видно на снимке экрана ниже, есть файлы возрастом 15 дней, 7 дней и 0 дней.
Список файлов в c:\temp
Теперь, когда вы знаете, какие файлы нужно удалить, вы можете создать скрипт, который будет удалять только файлы старше определенного количества дней, в данном случае старше 14 дней.
В приведенном ниже примере сценария файлы в папке C:\temp, значение CreationTime которых старше установленного порога, будут удалены.
Первая строка определяет путь для поиска Get-ChildItem. Путь сохраняется в переменной $path. Затем во второй строке указывается пороговое значение. Значение $threshold — возраст в днях, которому должен соответствовать удаляемый файл.
Следующая строка кода после переменной $threshold будет:
- Получить набор файлов, расположенных в папке, указанной в переменной $path. В этом примере путь C:\temp.
- Отфильтруйте выходные данные, чтобы включить только файлы, значение CreationTime которых старше, чем число дней, сохраненное в переменной $threshold. В этом примере порог – 14 дней.
- Передайте отфильтрованный список файлов в значение Remove-Item, чтобы выполнить удаление этих файлов.
Когда вы запустите приведенный выше код, вы увидите вывод, как показано ниже.
Скрипт удалил файлы старше 14 дней
Обратите внимание, что на снимке экрана выше, судя по подробному сообщению, сценарий удалил только пять файлов старше 14 дней. Чтобы убедиться, что файлы старше 14 дней все еще существуют, запустите приведенный ниже код, чтобы снова просмотреть их.
Результат ниже подтверждает, что команда Remove-Item не удалила более новые файлы.
Новые файлы остаются нетронутыми
Использование PowerShell для сопоставления и удаления шаблонов файлов
Удаление всех файлов, независимо от имени, типа или расширения, не всегда является лучшим подходом. Иногда вам нужно явно исключить или включить определенные файлы в процесс удаления.
В следующем примере ниже показано, как удалить файлы, которые соответствуют имени файла *.LOG. Один из способов сделать это — напрямую использовать командлет Remove-Item с параметром -Include, как показано ниже.
Еще один способ, возможно, более осторожный — сначала использовать Get-ChildItem для сбора списка файлов, подлежащих удалению. Только когда вас устроит список файлов для удаления, вы сможете, наконец, передать коллекцию командлету Remove-Item.
Например, приведенный ниже код получает файлы *.LOG в папке c:\temp.
.В результате приведенного выше кода Get-ChildItem возвращает список файлов, соответствующих имени файла *.LOG.
Возвращаются только файлы, соответствующие имени файла *.log
Но что, если вы хотите исключить файл, в имени которого содержится цифра 5? Вы можете сделать это, добавив параметр -Exclude, подобный следующему коду.
Поскольку вы исключили файл с номером 5, результат теперь другой. В частности, файла File_5.log больше нет в списке, как показано ниже.
Файл File_5.log был исключен
Когда вы уже удовлетворены набором файлов, созданных вашим кодом, вы можете передать этот набор файлов командлету Remove-Item, чтобы окончательно удалить эти файлы.
После запуска вашего окончательного кода вы достигнете своей цели, удалив только те файлы, которые вы выбрали.
Удаление выбранных файлов
Удаление файлов с помощью WMI в PowerShell
Теперь, когда вы хорошо разобрались с использованием обычного командлета Remove-Item для удаления файлов, давайте перейдем к более сложному варианту использования. с помощью WMI.
PowerShell поставляется с поддержкой WMI. А поддержка WMI означает, что запросы и методы WMI можно вызывать из PowerShell. Да, WMI предназначен не только для сценариев Visual Basic, которые администраторы использовали в ранние дни Windows.
Microsoft выпустила командлеты CIM для WMI в PowerShell 3.0. Для удаления файлов будут использоваться командлеты CIM Get-CimInstance и Invoke-CimMethod .
Использование PowerShell и WMI для удаления файла
В этом примере предполагается, что вы знаете путь к конкретному удаляемому файлу. Командлет Get-CimInstance с классом Cim_DataFile используется для получения информации об удаляемом файле: C:\Temp\random.txt.
В приведенном выше коде параметр -Filter принимает запрос в формате WQL. Использование WQL требует экранирования некоторых символов, включая обратную косую черту. И, поскольку escape-символ WQL также является обратной косой чертой, в результате получается двойная обратная косая черта — \\ .
Выполнение приведенного выше кода приводит к результату, показанному на демонстрации ниже. Информация о C:\Temp\random.txt сохраняется в переменной $file2delete
Теперь, когда информация о файле C:\Temp\random.txt получена, результирующий объект в переменной $file2delete можно передать командлету Invoke-CimMethod. Командлет Invoke-CimMethod имеет параметр -Name , который представляет имя метода класса Cim_DataFile.
Как вы видите на снимке экрана ниже, значение ReturnValue равно 0, что означает, что команда выполнена успешно.
Файл успешно удален с помощью WMI и PowerShell
Чтобы узнать о возможных кодах ReturnValue, перейдите по этой ссылке – Метод Delete класса CIM_DataFile
Кроме того, на снимке экрана ниже показано, что после запуска метода Invoke-CimMethod Delete() CIM удалил только файл C:\Temp\random.txt. Другие файлы не были удалены.
Файл C:\Temp\random.txt удален
Использование PowerShell и WMI для удаления всех файлов в папке
В следующем примере показано, как удалить все файлы в папке с помощью PowerShell и WMI. Будут использоваться те же командлеты, что и в предыдущем примере, а именно Get-CimInstance и Invoke-CimMethod. Но на этот раз запрос WQL извлечет все файлы в папке, а не только один конкретный файл.
В следующем коде командлет Get-CimInstance извлекает все файлы, расположенные в папке C:\temp. Как видно ниже, запрос фильтрует свойства Drive и Path класса Cim_DataFile.
Выполнение приведенного выше кода сохраняет полученную информацию о файлах в C:\temp в переменной $file2delete. Просмотр значений переменной $file2delete показывает вывод ниже.
Список всех папок, найденных в c:\temp с помощью WMI
Теперь значения, хранящиеся в переменной $file2delete, можно передать методу Invoke-CimMethod для удаления всех файлов в c:\temp.
Помните, что код ReturnValue, равный 0, означает успешное выполнение, и для каждого файла, для которого был вызван метод удаления, будет свой собственный код ReturnValue.
Все файлы в c:\temp удалены с помощью WMI
Использование PowerShell и WMI для удаления файлов по расширению
В предыдущем примере вы видели, как удалить все файлы в папке независимо от расширения. Однако вы также можете контролировать, какие файлы будут удаляться в зависимости от расширения.
В приведенном ниже коде вы заметите, что на этот раз в запрос добавлено условие (имя LIKE '%.log ). Это добавленное условие означает, что возвращаются только файлы с расширением .LOG. Знак процента ( % ) — это оператор WQL LIKE, означающий "Строка из нуля или более символов". В терминах программирования % эквивалентен подстановочному знаку, который является символом звездочки ( * ).
В приведенной ниже демонстрации показано, что перед выполнением приведенного выше кода имеется девять файлов *.LOG и только один файл *.TXT. После выполнения кода файлы *.LOG удаляются, и в папке остается только файл *.TXT.
Сравнение WMI и Remove-Item
На данный момент в этом руководстве вы получили общее представление о том, как использовать PowerShell для удаления файлов. Вы узнали об Remove-Item, а также о WMI. Оба выполняют схожие функции, но сильно различаются.
Какой метод следует использовать для удаления файлов; Remove-Item или WMI?
Использование встроенных в PowerShell командлетов, таких как Get-ChildItem и Remove-Item, для извлечения и удаления файлов выполняется намного быстрее, чем при использовании WMI.
В приведенном ниже примере показано сравнение использования WMI и встроенного командлета PowerShell для получения списка файлов в каталоге C:\windows\web и его подкаталогах.
Когда вы запустите приведенный выше код в PowerShell, вы увидите вывод, аналогичный приведенному ниже.
Get-ChildItem и Get-CimInstance с запросом WMI
Как видно из результатов, показанных выше, перечисление файлов в C:\windows\web заняло в десять раз больше времени с помощью Get-CimInstance, чем время потребовалось для завершения Get-ChildItem!
Кроме того, вы заметили, что строка Get-ChildItem намного короче строки Get-CimInstance ? Get-ChildItem позволяет не только ускорить выполнение, но и получить более чистый и короткий код.
Дальнейшие шаги
В этой статье вы увидели два разных способа использования PowerShell для удаления файлов с помощью встроенных командлетов и WMI/CIM.
Помните, что для удаления файлов всегда следует использовать командлеты Get-ChildItem и Remove-Item. Эти встроенные командлеты более гибкие, простые и быстрые в использовании, чем при использовании WMI.
Попробуйте придумать сценарий, который будет выполнять за вас уборку дискового пространства. Конечно, для этой цели уже существуют некоторые сценарии; во что бы то ни стало, используйте их в качестве справочного материала, но если вы хотите практиковаться и учиться, попробуйте создать свой собственный.
Дополнительная литература
Ненавидите рекламу? Хотите поддержать писателя? Получите многие из наших руководств в виде руководства по ATA.
Ещё от ATA Learning & Partners
Резервное копирование Office 365 для чайников
Лучшее руководство по защите данных Microsoft Office 365. Изучите готовые функции безопасности.
Руководства ATA
ATA известна своими высококачественными письменными учебными пособиями в форме сообщений в блогах. Поддержите ATA с помощью электронных книг ATA Guidebook PDF, доступных в автономном режиме и без рекламы!
Читайте также: