Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление старых файлов/папок если их кол-во больше n

Ответить
Настройки темы
CMD/BAT - [решено] Удаление старых файлов/папок если их кол-во больше n

Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день!
Помогите со скриптом, который будет сканировать нужную папку (например: C:\aaa), и если в нем файлов больше чем n (например 10), то удалить самый старый файл. И тоже самое нужно для папок.
Очень надеюсь на вашу помощь.

Отправлено: 14:32, 03-07-2013

 

Аватара для YuS_2

Crazy


Contributor


Сообщения: 1216
Благодарности: 508

Профиль | Отправить PM | Цитировать


Цитата POV:
.ps1 просто схлопывается через секунду, а если через cmd, то "Для продолжения нажмите любую клавишу . . ." и после нажатия такая-же ситуация .... И пробовал запускать под админом. »
Тогда откройте консоль powershell и отдельно каждую строку в консоли запускайте, а после возникновения исключения сделайте скриншот и приложите сюда к сообщению...

Цитата megaloman:
Коллега меня мамонтом обозвал!!! »
Да прям уж так мамонтом...
Совсем нет. Просто на cmd не практикую уже, ибо powershell хватает... а без практики, надо читать мануалы, составлять зубодробильный код, потом проверять всё, что получилось... нет, проще на powershell, всё же...

-------
scio me nihil scire. Ѫ


Отправлено: 12:51, 11-01-2023 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

POV POV вне форума

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, чего-то толи я тупой, толи лыжи не едут ....
Подставил в переменные даты 2023 год 09 января и всё равно не удаляются файлы ....
Знаю, что уже надоел
Может всё таки попробовать с .ps1 ?
Вот такой вариант хорошо справляется с задачей, но в нём надо подкорректировать , чтобы как я и писал ранее, не удалялись закинутые в данный Obmen старинные файлы.

Код: Выделить весь код
$Now = Get-Date
#количество дней, файлы старше которых должны быть удалены
$Days = "10"
#путь до отчищаемой папки
$TargetFolder = "\\FS\Obmen\"
#желаемые расширения файлов
$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"
 }
 }

Последний раз редактировалось POV, 11-01-2023 в 13:04.


Отправлено: 12:59, 11-01-2023 | #22

POV POV вне форума

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg 1.jpg
(37.2 Kb, 6 просмотров)
Тип файла: jpg 2.jpg
(65.2 Kb, 6 просмотров)

YuS_2,
Цитата YuS_2:
сделайте скриншот и приложите сюда к сообщению... »

Отправлено: 13:16, 11-01-2023 | #23


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1216
Благодарности: 508

Профиль | Отправить PM | Цитировать


POV, т.е. никакого исключения нет, хотя это очень странно... не вижу в первой строке кавычек... а без них никуда.
Кроме того, возможно, файлы, которые присутствуют в каталоге, не подходят под условие на удаление. Какая у них дата создания? (можно посмотреть в свойствах файла)
Для проверки, покажите вывод команд:

Код: Выделить весь код
$folder = 'D:\TEST\'
dir $folder -file|select name,creationtime,lastwritetime
И про кавычки не забудьте...

-------
scio me nihil scire. Ѫ


Отправлено: 13:57, 11-01-2023 | #24


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1216
Благодарности: 508

Профиль | Отправить PM | Цитировать


POV, а, да... на скриншоте видно, что Вы весь пакет строк пытались запустить за один раз... но надо построчно именно, т.е. каждую строку вставляем, Enter и т.д. ...

-------
scio me nihil scire. Ѫ


Отправлено: 14:15, 11-01-2023 | #25


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6618
Благодарности: 1524

Профиль | Отправить PM | Цитировать


Да можно и пакет, просто кавычек не было, поэтому шелл думал, что это продолжение одной строки.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 14:31, 11-01-2023 | #26


Ветеран


Contributor


Сообщения: 2727
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Цитата POV:
Подставил в переменные даты 2023 год 09 января и всё равно не удаляются файлы .... »
1.Покажите код, где Вы это проделали. Я не предусматривал в своём коде такую манипуляцию.
2. В командной строке запустите Dir \\fs\obmen\*.* >C:\obmen.txt
Хотя бы небольшой кусок получившегося файла приложите к сообщению.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 14:31, 11-01-2023 | #27


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1216
Благодарности: 508

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Да можно и пакет »
Да, конечно, но пакетом, как раз, не всегда можно определить место исключения ... тут ведь, непонятная ситуация, поэтому и предложил построчно, в целях дебага уточнить место затыка...

-------
scio me nihil scire. Ѫ


Отправлено: 14:42, 11-01-2023 | #28


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6618
Благодарности: 1524

Профиль | Отправить PM | Цитировать


На первом скрине вторая строка начинается с >>, соответственно, первая не закончилась.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:01, 11-01-2023 | #29


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1216
Благодарности: 508

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
На первом скрине вторая строка начинается с >>, соответственно, первая не закончилась. »
В этом и дело... исключения нет, проблема не решена... просто лишняя переписка на форуме. А если запустить первую строку отдельно, всё будет понятно, ибо вывалится исключение с описанием проблемы... хотя, сейчас попробовал в пакете без кавычек, исключение всё равно выдается... странно, как у POV, так получилось... ладно, придет - расскажет...

-------
scio me nihil scire. Ѫ


Отправлено: 17:42, 11-01-2023 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление старых файлов/папок если их кол-во больше n

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Кол-во файлов в папке. Balancer Microsoft Windows 7 11 21-10-2012 20:07
CMD/BAT - Удаление старых файлов по имени файлов Bиктор Скриптовые языки администрирования Windows 1 19-04-2010 03:37
[решено] как получить список, если кол-во строчек не постоянно Russo AutoIt 2 18-12-2009 10:41
кол-во файлов в папке rivera Microsoft Windows NT/2000/2003 3 29-06-2006 09:38
максимальное кол-во файлов на Cd-ROMе Dr Mad Хочу все знать 1 05-09-2005 06:19




 
Переход