Скрипт на удаление папки windows

Уровень сложностиСредний

Время на прочтение2 мин

Количество просмотров5.9K

Одной из наверное классических задач системного администратора является организация общей шары (файлопомойки), для оперативного обмена данными между сотрудниками.

Одной из проблем является то что этот «Обменник» превращается в инструмент долговременного хранения файлов, что недопустимо. посему всем сотрудникам сообщаем, что данные будут регулярно удаляться через N дней после их размещения на шаре.

А сами вооружаемся powershell и task scheduler, создаем скрипт со следующим содержимым и в планировщике ставим его на ежедневное исполнение

#Дата с которой сравнивать. В этом случае -15 дней от текущей даты
$date = (Get-Date).AddDays(-15)
#Путь до директории откуда удалять файлы
$path = "d:\data\public"
#Расположение отчетов 
$report = "C:\scripts\Result\file_list.txt"

#Работаем с файлами
#Вывод спписка всех файлов без  папок (в т.ч. внутри папок) старше чем значение в $date
$filelist = Get-ChildItem -Recurse -Path $path -file | Where-Object -Property CreationTime -lT $date  
$filelist  | Sort-Object -Property CreationTime | ft CreationTime ,VersionInfo | tee $report
#Удаляем файлы
#$filelist | Remove-Item 

#Работаем с каталогами
#вывод списка пустых директорий(где нет ни файлов ни директорий) старше чем дата $date 
$folderlist =  Get-ChildItem -Recurse -Path $path -Directory | Where-Object -Property LastWriteTime -lT $date | where { $_.psiscontainer -eq $true -and $_.GetFiles().count -eq 0 -and $_.GetDirectories().count -eq 0 } 
#вывод списка пустых директорий (где нет файлов, но есть директории)  старше чем дата $date 
#$folderlist =  Get-ChildItem -Recurse -Path $path -Directory | Where-Object -Property LastWriteTime -lT $date | where { $_.psiscontainer -eq $true -and $_.GetFiles().count -eq 0 } 
$folderlist | Sort-Object -Property LastWriteTime | ft LastWriteTime ,FullName | tee $report -Append
#Удаляем каталоги
#$folderlist | Remove-Item

P.s чукча не писатель и не великий кодер, пишу как умею

Ссылка на гит https://github.com/fiverok/psscripts/blob/main/Del_old_files.ps1

Всего голосов 6: ↑2 и ↓4

+2

Комментарии16


Рейтинг 4.66/92:

Супер-модератор

8828 / 4733 / 572

Регистрация: 13.03.2013

Сообщений: 16,819

Записей в блоге: 16

Удаление всех папок, кроме заданных

26.06.2014, 12:41. Показов 18227. Ответов 22


Имеется шара с папками, которые разбиты по отделам.
Нужен батник, который будет удалять лишние папки и файлы на шаре, кроме папок отделов и их содержимого.
Имена папок на русском языке.
Ранее был такой батник, но мой коллега случайно удалил батник и благополучно об этом умолчал.
В гугле ничего подходящего не нашел.
Надеюсь на Вашу помощь.

Тому, кто реально поможет будет плюсик в карму и репутацию.



0



Модератор

5240 / 2114 / 416

Регистрация: 06.01.2013

Сообщений: 4,845

26.06.2014, 12:43

Maks, по каким критериям определять «лишнесть» папки?



0



Супер-модератор

8828 / 4733 / 572

Регистрация: 13.03.2013

Сообщений: 16,819

Записей в блоге: 16

26.06.2014, 12:49

 [ТС]

Как мне думается, методом белого списка.
Нужно удалять все папки и файлы, кроме заданных (их примерно 10 шт.).



0



Borodа

101 / 95 / 8

Регистрация: 07.08.2013

Сообщений: 299

26.06.2014, 13:59

Ну первое, что пришло в голову:

Bash
1
2
3
4
5
6
@echo off
set folder=\\computername\sharename
for /f "delims=" %%i in (list.txt) do attrib +H %folder%\%%i 
for /f "delims=" %%i in ('dir /b/s/a-D-H %folder%') do echo del %%i /q
for /f "delims=" %%i in ('dir /b/s/aD-H %folder%') do echo rmdir %%i /q
for /f "delims=" %%i in (list.txt) do attrib -H %folder%\%%i

файл list.txt (для примера):

Code
1
2
3
test.bat
\www
\www\test

На рабочем варианте убрать echo.

P.S. Скрипт не будет удалять скрытые файлы и папки.



0



Супер-модератор

8828 / 4733 / 572

Регистрация: 13.03.2013

Сообщений: 16,819

Записей в блоге: 16

26.06.2014, 14:15

 [ТС]

Сообщение от Borodа

Ну первое, что пришло в голову:

К сожалению, не работает.



0



101 / 95 / 8

Регистрация: 07.08.2013

Сообщений: 299

26.06.2014, 14:34

Сообщение от Maks

К сожалению, не работает.

А подробнее можно? Что пишет?



0



Dragokas

18024 / 7727 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

26.06.2014, 17:29

Сообщение было отмечено ComSpec как решение

Решение

Borodа, а если я поставлю NTFS-запрет на смену атрибутов?

Maks, приведите, как варьируется уровень вложенности удаляемых папок.

В общем случае можно через findstr:

Bash
1
2
3
4
5
6
7
@echo off
SetLocal EnableExtensions
 
set folder=h:\_VBA\_Dragokas
 
For /F "delims=" %%a in ('dir /b/s/ad "%folder%\*" ^| findstr /BLIXVG:"list.txt"') do echo rd /s /q "%%a"
pause

Файл list.txt нужно формировать

с полными путями

,

двойными слеш

и сохранять

в кодировке OEM-866

.
Пример:

Code
1
2
h:\\_VBA\\_Dragokas\\1\\folder1
h:\\_VBA\\_Dragokas\\1\\folder2

Под шару сами переделаете.



2



Maks

Супер-модератор

8828 / 4733 / 572

Регистрация: 13.03.2013

Сообщений: 16,819

Записей в блоге: 16

27.06.2014, 08:45

 [ТС]

Сообщение от Borodа

А подробнее можно? Что пишет?

Ничего.

Сообщение от Dragokas

‘dir /b/s/ad «%folder%\*» ^| findstr /BLIXVG:»list.txt»

Где «list.txt» нужно указать путь к файлу list.txt?
Если так, то получается следующее:

Bash
1
2
3
4
5
6
7
@echo off
SetLocal EnableExtensions
 
set folder=C:\Temp
 
For /F "delims=" %%a in ('dir /b/s/ad "%folder%\*" ^| findstr /BLIXVG:"C:\Temp\list.txt"') do echo rd /s /q "%%a"
pause

list.txt

C:\\Temp\\ИТ
C:\\Temp\\Кадры

Кодировка OEM-866
Запускаю батник и вижу следующее:

По задумке «Новая папка» должна была удалиться.
После того, как я нажимаю «Любую клавишу» ничего не происходят, содержимое папки «temp» не меняется.



0



101 / 95 / 8

Регистрация: 07.08.2013

Сообщений: 299

27.06.2014, 09:22

Сообщение от Dragokas

Borodа, а если я поставлю NTFS-запрет на смену атрибутов?

Ну я так понимаю, что батник будет запускаться от пользователя с «правильными» правами.
А то так можно сказать:
А если я поставлю NTFS-запрет на удаление?

Сообщение от Maks

Ничего.

Не может такого быть.
Тем более, что у меня всё отлично работает.
Уберите первую строчку и покажите, что получилось в результате.

Добавлено через 1 минуту
Или добавьте в конце pause.
Т.к. судя по скринам вы запускаете батники не из консоли и возможно просто не успеваете увидеть вывод.



0



Супер-модератор

8828 / 4733 / 572

Регистрация: 13.03.2013

Сообщений: 16,819

Записей в блоге: 16

27.06.2014, 09:45

 [ТС]

Сообщение от Borodа

Не может такого быть.
Тем более, что у меня всё отлично работает.

Если бы ваш батник работал, я на нем и остановился бы, нет особого желания расписываться на несколько страниц.



0



Супер-модератор

8828 / 4733 / 572

Регистрация: 13.03.2013

Сообщений: 16,819

Записей в блоге: 16

27.06.2014, 09:53

 [ТС]

Borodа,

тыц



0



101 / 95 / 8

Регистрация: 07.08.2013

Сообщений: 299

27.06.2014, 11:32

ваше дело



0



Супер-модератор

8828 / 4733 / 572

Регистрация: 13.03.2013

Сообщений: 16,819

Записей в блоге: 16

27.06.2014, 11:34

 [ТС]

Сообщение от Borodа

ваше дело

В каком смысле?
Я запустил Ваш батник изменив директорию, результат Вы видите выше и еще минусуете мне репутацию.



0



101 / 95 / 8

Регистрация: 07.08.2013

Сообщений: 299

27.06.2014, 11:37

А зачем вы в list.txt прописываете полные пути к файлам?

Добавлено через 56 секунд
Минусанул вот за это:

Сообщение от Maks

нет особого желания расписываться на несколько страниц.

Тут помочь стараешься, а в ответ получаешь…

Добавлено через 1 минуту
И если есть русские буквы, то list.txt нужно сохранить в кодировке консоли.



0



Maks

Супер-модератор

8828 / 4733 / 572

Регистрация: 13.03.2013

Сообщений: 16,819

Записей в блоге: 16

27.06.2014, 12:59

 [ТС]

Сообщение от Borodа

Минусанул вот за это:
Сообщение от Maks
нет особого желания расписываться на несколько страниц.
Тут помочь стараешься, а в ответ получаешь…

Вы посты полностью читаете?
======================================== =======
В общем, методом тыка и не без помощи великого гугла, наковырял следующий код:

Bash
1
2
3
4
5
6
7
8
9
set dest=C:\Temp
cd /d %dest%   
for %%i in (%dest%\*.*) do del /q %%i   
for /f "delims=;"  %%i in ('dir /b /ad') do call:job "%%i" 
exit /b   
:job 
for /f "delims=;" %%k in (C:\1\list.txt) do  if /I %1=="%%k" GOTO:EOF 
rd /q /s %1 
GOTO:EOF

Содержимое файлика list.txt, в виде:

Code
1
2
Папка1;
Папка2;

Кодировка ОЕМ-866.
Все работает на «УРА», задача выполняется корректно.



1



1780 / 762 / 130

Регистрация: 09.04.2011

Сообщений: 1,325

27.06.2014, 13:35

Сообщение от Maks

for /f «delims=;» *%%i in (‘dir /b /ad’) do call:job «%%i»

Команда перебирает только корневые папки. Для проверки вложенных папок добавьте ключ /s



0



Borodа

101 / 95 / 8

Регистрация: 07.08.2013

Сообщений: 299

27.06.2014, 13:43

А может мне кто-то объяснить чем конструкция

Bash
1
for %%i in (%dest%\*.*) do del /q %%i

отличается от обычного del /q *.*

И если я все правильно понял в этом случае сохранить файлы в корне шары не представляется возможным.

Ну и собственно да, скрипт работает только на первом уровне.

Если добавить ключ /s тогда в файле list.txt нужно будет указывать полные пути для всех вложенных папок которые нужно сохранить.

Т.е. записи Папка1 будет не достаточно, скрипт сохранит саму папку, но грохнет все подпапки.



0



1780 / 762 / 130

Регистрация: 09.04.2011

Сообщений: 1,325

27.06.2014, 13:59

Сообщение от Borodа

А может мне кто-то объяснить

Ничем. Путь только указываем, иначе батник сам себя грохнет.

Сообщение от Borodа

Если добавить ключ /s тогда в файле list.txt нужно будет указывать полные пути для всех вложенных папок которые нужно сохранить.
Т.е. записи Папка1 будет не достаточно, скрипт сохранит саму папку, но грохнет все подпапки.

Важно! Чтобы скрипт не грохнул корневую папку, путь к корневой папке нужно добавить в «белый список» на ряду с путями подпапок.
Maks, чем код Dragokas не устроил?



0



Супер-модератор

8828 / 4733 / 572

Регистрация: 13.03.2013

Сообщений: 16,819

Записей в блоге: 16

27.06.2014, 14:12

 [ТС]

Сообщение от sov44

Maks, чем код Dragokas не устроил?

Ответ в посте №8.

Сообщение от Borodа

отличается от обычного del /q *.*
И если я все правильно понял в этом случае сохранить файлы в корне шары не представляется возможным.
Ну и собственно да, скрипт работает только на первом уровне.

Я указал только название папок в list.txt, при этом содержимое этих папок и подпапок на месте.

Сообщение от Borodа

Если добавить ключ /s тогда в файле list.txt нужно будет указывать полные пути для всех вложенных папок которые нужно сохранить.
Т.е. записи Папка1 будет не достаточно, скрипт сохранит саму папку, но грохнет все подпапки.

Зачем все усложнять, когда батник работает именно так, как нужно?



0



18024 / 7727 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

27.06.2014, 14:29

Сообщение от Maks

После того, как я нажимаю «Любую клавишу» ничего не происходят, содержимое папки «temp» не меняется.

Сообщение от Dragokas

echo rd /s /q «%%a»

Вложение, к сожалению, из своей сети увидеть не могу.

Сообщение от Maks

Где «list.txt» нужно указать путь к файлу list.txt?

Там же, где и написано list или положить рядом с батником.



0



raxper

Эксперт

30234 / 6612 / 1498

Регистрация: 28.12.2010

Сообщений: 21,154

Блог

27.06.2014, 14:29

20

Новые блоги и статьи

Все статьи  

Все блоги / 

Как использовать OAuth2 со Spring Security в Java

Javaican 14.05.2025

Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .

Анализ текста на Python с NLTK и Spacy

AI_Generated 14.05.2025

NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .

Реализация DI в PHP

Jason-Webb 13.05.2025

Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .

Обработка изображений в реальном времени на C# с OpenCV

stackOverflow 13.05.2025

Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .

POCO, ACE, Loki и другие продвинутые C++ библиотеки

NullReferenced 13.05.2025

В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .

Паттерны проектирования GoF на C#

UnmanagedCoder 13.05.2025

Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .

Создаем CLI приложение на Python с Prompt Toolkit

py-thonny 13.05.2025

Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .

Конвейеры ETL с Apache Airflow и Python

AI_Generated 13.05.2025

ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .

Выполнение асинхронных задач в Python с asyncio

py-thonny 12.05.2025

Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .

Работа с gRPC сервисами на C#

UnmanagedCoder 12.05.2025

gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .

Наверх

Хочу сегодня показать вам очередной скрипт PowerShell. В этот раз – для удаления старых файлов и пустых папок. Такой скрипт может пригодиться для отчистки, например файловых серверов, или каких-нибудь временных или обменных папок.

Скачать скрипт можно тут. Скрипт на GitHub.

Текст скрипта:

$Now = Get-Date
$Days = "7"
$TargetFolder = "C:\Users\sanglyb\Documents\"
$Extension = "*"
$LastWrite = $Now.AddDays(-$Days)
$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where{$_.CreationTime -le "$LastWrite" -and $_.LastWriteTime -le "$LastWrite"} | Sort-Object -Descending {$_.FullName.Split('\').Count},FullName
foreach ($File in $Files)
{
 if ($File -ne $NULL -and !$File.PSIsContainer)
 {
  write-host "Deleting File $File" -ForegroundColor "Magenta"
  Remove-Item $File.FullName -Force | out-null
 }
 elseif ($File -ne $NULL -and $File.PSIsContainer)
 {
        $FolderInfo = get-Childitem $File.FullName | Measure-Object
        if ($folderInfo.count -eq 0)
        {
            write-host "Deleting directory - $File" -foregroundcolor "green"
            Remove-Item $File.FullName -Force | out-null
        }
 }
 else
 {
  Write-Host "No more files to delete!" -foregroundcolor "Green"
 }
 }
 #удаляем пустые папки, не зависимо от времени создания
 $folderInfo=""
 $Folders = Get-Childitem $TargetFolder -Recurse | Where{$_.PSIsContainer} | Sort-Object -Descending {$_.FullName.Split('\').Count},FullName
 foreach ($Folder in $Folders)
 {
    if ($Folder -ne $null)
    {
        $FolderInfo = get-Childitem $Folder.FullName | Measure-Object
        if ($folderInfo.count -eq 0)
        {
            write-host "Deleting directory - $Folder" -foregroundcolor "yellow"
            Remove-Item $Folder.FullName -force | out-null
        }
    }
 }

Пару слов, о том, что тут происходит.

$Days = "7"
$TargetFolder = "C:\Users\sanglyb\Documents\"
$Extension = "*"

Тут мы указываем количество дней, файлы старше которых должны быть удалены, задаем путь до отчищаемой папки и желаемые расширения файлов, если вам нужно удалять определенные типы файлов, например можно задать *.js тогда будут удалены все старые JavaScript файлы.

$LastWrite = $Now.AddDays(-$Days)
$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where{$_.CreationTime -le "$LastWrite" -and $_.LastWriteTime -le "$LastWrite"} | Sort-Object -Descending {$_.FullName.Split('\').Count},FullName

В этом участке мы находим все файлы, которые подходят под наши критерии. А также сортируем список, что бы всё шло от большего пути к меньшему. Это нужно, если у вас будут вложенные папки, что бы скрипт всегда сперва удалял файлы, а потом уже пытался удалить папку, где расположены эти папки.

foreach ($File in $Files)
{
 if ($File -ne $NULL -and !$File.PSIsContainer)
 {
  write-host "Deleting File $File" -ForegroundColor "Magenta"
  Remove-Item $File.FullName -Force | out-null
 }

Собственно, удаляем файл.

elseif ($File -ne $NULL -and $File.PSIsContainer)
 {
                               $FolderInfo = get-Childitem $File.FullName | Measure-Object
                               if ($folderInfo.count -eq 0)
                               {
                                               write-host "Deleting directory - $File" -foregroundcolor "green"
                                               Remove-Item $File.FullName -Force | out-null
                               }
 }

Тут мы удаляем папку, но перед ее удалением, проверяем, что бы она была пустая.

$folderInfo=""
 $Folders = Get-Childitem $TargetFolder -Recurse | Where{$_.PSIsContainer} | Sort-Object -Descending {$_.FullName.Split('\').Count},FullName
 foreach ($Folder in $Folders)
 {
                if ($Folder -ne $null)
                {
                               $FolderInfo = get-Childitem $Folder.FullName | Measure-Object
                               if ($folderInfo.count -eq 0)
                               {
                                               write-host "Deleting directory - $Folder" -foregroundcolor "yellow"
                                               Remove-Item $Folder.FullName -force | out-null
                               }
                }
 }

По сути, это повторение уже проделанной операции. Но тут мы проходимся по всем папкам, ищем пустые папки и удаляем их.

Такой вот не хитрый, но думаю весьма полезный в хозяйстве скриптик. Надеюсь, информация окажется вам полезной.

Автоматическое удаление старых файлов [скрипт PowerShell]. Скрипт в работе

Если вы не можете удалить какие-то файлы или папки со своего компьютера под управлением ОС Windows, то мы рекомендуем вам воспользоваться такое полезной штуковиной, как PowerShell. При помощи данного средства вы без каких-либо проблем можете удалить из системы файлы и папки, которые сложно или и вовсе нельзя удалить традиционными методами.

PowerShell для удаления файлов и папок

Чтобы удалить из системы файлы и папки с помощью Windows PowerShell, вам нужно придерживаться следующих шагов:

  1. откройте Windows PowerShell;
  2. найдите нужный файл или папку;
  3. выполните команду по удалению объекта.

Верно, все настолько просто. Однако давайте все-таки пройдемся по процессу удаления через PowerShell немного поподробней.

Удаление одного файла через PowerShell

Прежде все, вам необходимо открыть перед собой окошко PowerShell. Для этого нажмите на клавиатуре комбинацию Windows+S, а затем пропишите запрос PowerShell. Нажмите правой кнопкой на найденный результат и выберите «Запуск от имени администратора».

Чтобы удалить какой-то определенный файл, вам нужно выполнить следующую команду:

Remove-item [путь к файлу]

В общем, довольно простая команда. Давайте предположим, что у вас на Рабочем столе есть папка под названием «Testfiles», а внутри нее лежит файл Testfiles.jpg, который вам нужно удалить. В таком случае вышеуказанная команда будет выглядеть следующим образом:

Remove-item C:\Users\[имя пользователя]\Desktop\Testfiles\Testfiles.jpg

Обязательно не забываем прописывать расширение файла под удаление, иначе PowerShell просто не разберет команду — файл останется на компьютере и вы увидите ошибку в окошке средства.

Удаление одной папки через PowerShell

Хотите удалить какую-то конкретную папку в своей ОС Windows? Тогда вам нужно использовать точно такую же команду, что и ранее.

Remove-item [путь к папке]

Давайте предположим, что у вас на Рабочем столе есть папка под названием «Testfiles» — вы хотите от нее избавиться. В таком случае команда примет следующий вид:

Remove-item C:\Users\[имя пользователя]\Desktop\Testfiles

Если папка пустая, то она будет удалена сразу же. Тем не менее при наличии хоть каких-то файлов в ней вам придется нажать на кнопки Y и Enter, чтобы подтвердить их удаление. В окошке PowerShell будут подсказки начнет того, за что отвечают какие кнопки.

Удаление нескольких файлов через PowerShell

Если вы хотите избавиться сразу от нескольких файлов через PowerShell, то вам потребуется использовать уже несколько иную команду. Выглядеть она будет следующим образом:

Remove-item [путь к файлу], [путь к файлу1], [путь к файлу2]

Верно, вам придется вводить местоположение для каждого файла, который вы хотите удалить из своей системы. Предположим, что у вас на Рабочем столе есть файл AnotherTest.txt, а в папке Downloads — AnotherTest1.jpg. Что делать, если их оба нужно удалить? В таком случае команда для PowerShell будет выглядеть следующим образом:

Remove-item C:\Users\[имя пользователя]\Desktop\AnotherTest.txt, C:\Users\[имя пользователя]\Downloads\AnotherTest1.jpg

Удаление нескольких папок через PowerShell

Команда для удаления нескольких папок мало чем отличается от команды, предназначенной для удаления нескольких файлов. Используя прошлые примеры, команда в PowerShell для нескольких папок будет выглядеть следующим образом:

Remove-item C:\Users\[имя пользователя]\Desktop\AnotherTest, C:\Users\[имя пользователя]\Downloads\AnotherTest1

Опять-таки, если в этих папках будут располагаться какие-то файлы, то вам потребуется подтвердить их удаление в окне PowerShell, нажав Y и Enter. Кроме того, стоит отметить, что файлы и папки, удаленные подобным образом, не попадают в Корзину на Рабочем столе, а сразу же удаляются из системы.

Проверка наличия файлов в папке через PowerShell

Если вы не можете открыть папку, но хотите знать, что в ней находится, то можете воспользоваться следующей командой:

Get-ChildItem [путь к папке]

Например, если вы хотите заглянуть внутрь папки «AnotherTest2», располагающейся на Рабочем столе, то команда будет выглядеть вот так:

Get-ChildItem C:\Users\[имя пользователя]\Desktop\AnotherTest2

Задействовав данную команду, вы увидите несколько колонок, в которых будет содержаться полезная информация касательно файлов внутри нужной вам папки. Последняя колонка (по умолчанию) будет отвечать за название файлов. Так вы будете знать, стоит ли удалять эту папку или нет.

Проверка последнего изменения и времени создания через PowerShell

Если вы хотите понять, когда был создан и изменен какой-то объект (папка или файл) в вашей системе, то вам нужно выполнить в PowerShell следующую команду:

Get-ChildItem C:\Users\[имя пользователя]\Desktop\AnotherTest2 | Select-Object FullName, LastWriteTime, CreationTime

Принудительное удаление объекта через PowerShell

У вас не получится использовать вышеуказанные команды для удаления скрытых файлов и файлов с атрибутом только для чтения. Если вы попытаетесь это сделать, то в окошке PowerShell вас встретит ошибка. Тем не менее вы можете принудительно избавиться от тех или иных файлов/папок, задействовав параметр -force. Предположим, что у вас на Рабочем столе есть папка AnotherTest3 со скрытыми файлами внутри и вы хотите избавиться от нее. Для удаления этой папки вам нужно выполнить в PowerShell следующую команду:

Remove-item C:\Users\[имя пользователя]\Desktop\AnotherTest3 -force

Как и всегда, при желании удалить два или больше объектов вам понадобится нажать Y и Enter в окошке PowerShell, чтобы подтвердить свои намерения.

Удаление файлов/папок без подтверждения через PowerShell

Кстати, говоря о подтверждения об удалении, не хотите постоянно заниматься ими? Тогда вы можете пропустить эти запросы, применив к команде на удаления особый параметр. Такая команда будет выглядеть следующим образом:

Remove-item C:\Users\[имя пользователя]\Desktop\AnotherTest3 -recurse

После ввода этой команды все указанные файлы и папки будут сразу же удалены с вашего компьютера — подтверждать ничего не нужно.

Исключение из команды на удаление в PowerShell определенных файлов

Давайте представим, что у вас есть несколько файлов с различными расширениями, например, TXT, PNG, DOCX, PDF и так далее. Вы хотите удалить всё, за исключением файлов с расширением TXT. В таком случае вам нужно задействовать вместе с соответствующей командой параметр -exclude. Вот что у вас должно получиться:

Remove-Item –path C:\Users\[имя пользователя]\Desktop\AnotherTest3* -exclude *.txt

Как вы уже могли догадаться, из папки AnotherTest3 будут удалены абсолютно все объекты, за исключением текстовых файлов. Очень удобная команда для очистки какой-то папки, в которой намешано очень много разных файлов, и вам нужно отфильтровать ее, избавившись от всего ненужного.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Regcleaner windows 10 64 bit
  • Не могу активировать windows 7 ultimate
  • Самый энергоэффективный браузер windows
  • Отличие windows 1251 от utf 8
  • Windows memory available bytes