|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Подсчёт количества файлов и отправка сообщения об этом на мэйл c помощью PowerShell |
|
PowerShell - [решено] Подсчёт количества файлов и отправка сообщения об этом на мэйл c помощью PowerShell
|
Старожил Сообщения: 161 |
День добрый господа.
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 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Ololosh:
У… как я припоздал ![]() |
|
Отправлено: 17:08, 14-01-2015 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Iska, видимо если название до "_*.pdf" соответствует названию другого файла до "_*.pdf" - то их можно считать за один
Foreigner, простите меня за мою неопытность, но не могли бы подробнее описать, что делается в вашем коде и как его запустить |
Отправлено: 17:12, 14-01-2015 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Ololosh, да я понял уже. Пока я рассусоливал, уже спросили, ответ получили и решение на-гора выдали:
Цитата Kazun:
![]() |
|
Отправлено: 17:22, 14-01-2015 | #13 |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Iska, а не могли бы вы тогда мне объяснить, что происходит в данном ответе и как его использовать, просто мои познания пока не позволяют этого сделать.
|
Отправлено: 17:27, 14-01-2015 | #14 |
Ветеран Сообщения: 1758
|
Ololosh, Прописываете название директории с файлами ( у меня .\test, это относительный путь) и маску файлов (например *.pdf). Если надо рекурсивно , то добавьте ключ -recurse (например $f = gci C:\test *.pdf -recurse). Скрипт выведет кол-во файлов (или групп файлов).
все остальное можно найти в справке: |
Отправлено: 17:27, 14-01-2015 | #15 |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Foreigner,
Ответ он мне вроде выдаёт, только перед этим какую-то ещё ошибку: Произошла ошибка при вызове метода, так как [System.Collections.Hashtable+KeyCo llection] не содержит метод с именем "foreach". строка:16 знак:18 + ($n.keys).foreach <<<< ({ + CategoryInfo : InvalidOperation: (foreach:String) [], RuntimeEx ception + FullyQualifiedErrorId : MethodNotFound 3 |
Отправлено: 17:31, 14-01-2015 | #16 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Ololosh:
|
|
Отправлено: 17:32, 14-01-2015 | #17 |
Ветеран Сообщения: 1758
|
|
Отправлено: 17:34, 14-01-2015 | #18 |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Iska, я для примера создал txt файлы, но это сути не меняет
$f = gci D:\test\*.txt -recurse $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:35, 14-01-2015 | #19 |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Foreigner, версия 2.0
Прошу прощения, но скрипт оказывается не работает, а просто выдаёт числа. При каждом новом запуске скрипт показывает на +1 больше число. Но с заменой на Цитата Foreigner:
Так по поводу скрипта господина Kazun-a Цитата Kazun:
Но кто-нибудь может объяснить, что он делает более подробно? |
||
Последний раз редактировалось Ololosh, 15-01-2015 в 10:27. Отправлено: 09:57, 15-01-2015 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|