2015-03-30 2 views
1

У меня есть около 8 PDF-файлов, которые нужно перенести из одной папки в другую и переименовать с расширением даты «filename_yyyymmdd».Скрипт Powershell для перемещения и переименования файлов

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

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

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

Try 
{ 
    $a = "\\servername\Users\Desktop\agile.docx" 
    $b = "\\servername\Users\Desktop\Archive\agile.docx" 

    Move-item $a $b -ErrorAction stop 

    Function renameFile ($location, $filename, $extension) 
    { 
    $d = get-date -uformat "%Y%m%d" 
    $old = $location + $filename + $extension 
    $new = $filename + "_" + $d + $extension 
    rename-item $old $new 
    } 

    renamefile -location "\\servername\Users\desktop\Archive\" ` 
      -filename "Agile" ` 
      -extension ".docx" 
} 
Catch 
{ 
    $ErrorMessage = $_.Exception.Message 
    $FailedItem = $_.Exception.ItemName 
    Send-MailMessage -From [email protected] -To [email protected] ` 
        -Subject "Files Failed to Transfer to Archive Folder!" ` 
        -Body "The error message is: '$ErrorMessage'" ` 
        -SmtpServer smtp... 
    Break 
} 

ответ

1

Просто перепишите это, чтобы использовать подход Try/Catch/Finally, вы почти там!

Try {Move-item $a $b -ErrorAction stop} 
Catch {#if an error happens when moving the file, this code executes 
    $ErrorMessage = $_.Exception.Message 
    $FailedItem = $_.Exception.ItemName 
    Send-MailMessage -From [email protected] -To [email protected] ` 
    -Subject "Files Failed to Transfer to Archive Folder!" -SmtpServer smtp... ` 
    -Body "The error message is: '$ErrorMessage', which was encountered when ` 
     moving file $a" 
    RETURN 
    #use return to continue looping on the other files, where BREAK will exit the whole script 
    } 
Смежные вопросы