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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Подсчёт количества файлов и отправка сообщения об этом на мэйл c помощью PowerShell

Ответить
Настройки темы
PowerShell - [решено] Подсчёт количества файлов и отправка сообщения об этом на мэйл c помощью PowerShell

Старожил


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

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


День добрый господа.
PowerShell я начал изучать недавно и вот получил первое задание:
В некую папку сохраняются файлы типа xxx.pdf, xx1.pdf, xxx2_1.pdf, xxx2_2.pdf и тд.
Необходимо посчитать общее количество всех файлов в папке, причём файлы типа xxx2_1.pdf и xxx2_2.pdf - должны считаться как 1 файл. И на почту должно скидываться письмо с их количеством.

Пока я только смог осилить лишь подсчёт всех файлов и отправка этого на почту:

$a = (Get-ChildItem -Path D:\test\ -Include *.pdf -Recurse | Measure-Object -Property Length -Sum).count
Send-MailMessage -From "<xxx>" -To "<yyy>" -Subject "Сумма файлов в какой-то папке" -Body "Сумма файлов равна $a" -SmtpServer zzz

Но я не могу придумать алгоритм по которому будут считаться файлы вида xxx2_1.pdf и xxx2_2.pdf как один файл. Кто может помочь с этой задачей? желательно подробно описать что и как.

Отправлено: 15:30, 14-01-2015

 

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


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

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


дак может просто не считать файлы xxx2_2 ???

Отправлено: 15:48, 14-01-2015 | #2



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

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


Старожил


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

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


red.army@vk, файл ххх2_2 я привёл как пример, так как он является лишь частью файла ххх2 - то конешно он сам не будет считаться в общем количестве.

Отправлено: 15:53, 14-01-2015 | #3


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


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

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


ну как то так тогда ls *.pdf -Exclude *_2.pdf

$a = ls *.pdf -Path D:\test\* -Exclude *_2.pdf -Recurse
Measure-Object -InputObject $a -Property Length -Sum
Send-MailMessage -From "<xxx>" -To "<yyy>" -Subject "Сумма файлов в какой-то папке" -Body "Сумма файлов равна $a.count" -SmtpServer zzz

кстате можно вообще без второй строчки, если интерестно только КОЛ-ВО

Код: Выделить весь код
$a = ls *.pdf -Path D:\test\* -Exclude *_2.pdf -Recurse
Send-MailMessage -From "<xxx>" -To "<yyy>" -Subject "Сумма файлов в какой-то папке" -Body "Сумма файлов равна $a.count" -SmtpServer zzz
И для русского языка в сообщении лучше указать кодировку UTF8 в Send-MailMessage
-Encoding UTF8

Последний раз редактировалось red.army@vk, 14-01-2015 в 16:27.


Отправлено: 16:02, 14-01-2015 | #4


Старожил


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

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


red.army@vk, это по-моему лишь выдаст все пдф без "_2"
Но нужно учитывать что файлы могут быть и "_3" и "_4" и вообще "_"любое значение"".
Кроме того, файлы могут сразу называться 123_2.pdf

Отправлено: 16:25, 14-01-2015 | #5


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


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

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


Так и не понял, что Вы хотите) Опишите подробней
Считать нужно только *_1.pdf ?
Или все кроме *_2.pdf ?

Отправлено: 16:32, 14-01-2015 | #6


Старожил


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

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


Нужно посчитать количество файлов в определённой папке, файлы типа ххх1_1, ххх1_2 нужно объединить, чтобы при подсчёте они числились как один файл, пример:
123.pdf
1234.pdf
1234_46.pdf
ххх1_1.pdf
ххх1_2.pdf

при подсчёте - должно получиться 3 файла

Отправлено: 16:40, 14-01-2015 | #7


Ветеран


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

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


Код: Выделить весь код
$count = @(Get-ChildItem *.pdf | Group {$_.basename.split("_")[0]}).Count

Последний раз редактировалось Kazun, 14-01-2015 в 17:03.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:57, 14-01-2015 | #8


Старожил


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

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


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

Последний раз редактировалось Ololosh, 14-01-2015 в 17:20.


Отправлено: 17:07, 14-01-2015 | #9


Ветеран


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

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


Как-то так, считает группу файлов "имя_номер" за один, если они начинаются с единицы, т.е:

123_1.txt, 123_2.txt, 123_4.txt -- группа
123_2.txt, 123_3.txt -- не группа, а отдельные файлы

Код: Выделить весь код
$f = gci .\test *.txt

$n = @{}
switch -regex ($f.basename) {

	".+_\d+" { 
	
		[array] $n.$($_ -replace '_\d+','') += $_
	
	}
	
	default  { $c++ }

}

($n.keys).foreach({
	

	if (($n.$_[0] -replace '.+_(\d)$','$1') -eq 1) { $c++ }
	else { $c += $n.$_.count }
	
})

$c

Отправлено: 17:08, 14-01-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Подсчёт количества файлов и отправка сообщения об этом на мэйл c помощью PowerShell

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Отправка сообщения с помощью PowerShell rar_xxx Скриптовые языки администрирования Windows 25 30-09-2014 13:13
C/C++ - Подсчёт количества слов в строке через цикл pashazt Программирование и базы данных 3 16-12-2012 10:54
сообщения на этом форуме через браузер на Android VictorSh Хочу все знать 4 19-09-2012 02:39
2003/XP/2000 - Outlook | Подсчёт количества писем. streamliner Microsoft Office (Word, Excel, Outlook и т.д.) 0 02-07-2012 13:55
Разное - Подсчёт количества узлов поддерева 1988fenix Программирование и базы данных 0 16-12-2009 18:56




 
Переход