Maniak <xyz@abc.com> napisał(a):
Zaczynam się bać.
Komunikaty podczas przetwarzania się tego drugiego skryptu są bardzo
dziwne. Sięga do bardzo różnych plików na dysku, w bardzo różnych
folderach, ale żaden z nich nie ma nic wspólnego z pocztą.
Czy uruchamiasz go w folderze z pocztą? Czy podawałeś ścieżkę do tego folderu
jeśli uruchamiasz z innego (dla komendy ls)?
Teraz rozumiem poprzednie zastrzeżenie o zaufaniu.
Oczywiście, bo np. może być błąd w skrypcie. Jeden już nawet widzę. Otóż
testowałem u siebie na plikach .txt i w skrypcie
wysłanym na grupie było właśnie *.txt zamiast *.eml. Skrypt mógł więc zmienić
Ci nazwy niektórych plików tekstowych.
Bardzo przepraszam.
Poniżej poprawny, dodatkowo z obsługą nieprawidłowych znaków:
$c = 1
ls -r *.eml | foreach {
$subject = gc $_ | Select-String 'Subject: (.*)' | foreach {$_.Matches} |
foreach {$_.Groups[1].Value}
if($subject -is [String]) {
$subject = $subject.Split([IO.Path]::GetInvalidFileNameChars()) -join '_'
'Rename ' + $_.Name + ' -> ' + $subject + $c + '.eml'
$_ | Rename-Item -NewName ($subject + $c + '.eml')
}
$c = $c + 1
}
--
Grzegorz Niemirowski
https://www.grzegorz.net/
|