none
написать скрипт на powershell проверки и копирования файлов.

Ответы

  • $params = @{
        'akva' = '10.10.1.10';
        'gal' = '10.17.1.10';
        'ital' = "10.14.1.10"
    }
    
    Foreach ($key in $params.keys) {
        $SourceFolder = "Z:\PlanUpload\$key"
        $DestinationFolder = "\\$($params[$key])\data\$key"
        Write-Host "Start working with '$key' directory"
        Get-ChildItem $SourceFolder -Recurse -File | foreach {
            $DestinationFilePath= $_.FullName.Replace($SourceFolder, $DestinationFolder) 
            if ((!(Test-Path $DestinationFilePath)) -or ($_.LastWriteTime -gt (Get-Item $DestinationFilePath).LastWriteTime)){
                if (!(Test-Path $DestinationFilePath)){
                    Write-Host "File '$DestinationFilePath' does not exist and would be copied" -ForegroundColor Green
                }
                else {
                    Write-Host "File '$DestinationFilePath' older than the same file in a source folder" -ForegroundColor Green
                }
                Copy-Item $_.FullName $DestinationFilePath -Force
            }
            elseif ((Get-FileHash $_.FullName).hash -eq (Get-FileHash $DestinationFilePath).hash){
                Write-Host "Files '$($_.name)' in souce and destination folder are the same. `r`nFile $($_.fullname) would be skipped" -ForegroundColor Yellow
            }
            else{
                Write-Host "Some message could be here..."
            }
        }
    }


    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа KazunEditor 19 ч. 35 мин. назад
    8 ноября 2018 г. 11:24
    Модератор

Все ответы

  • Get-ChildItem z:\planupload -recurse | where {$_.name -match '\d{2}_\d{4}\.xls'} | foreach {
       if (! (test-path "c:\somepath\$($_.name)")){
          copy-item $_.fullname c:\somepath\
          if (test-path "c:\somepath\$($_.name)"){
              move-item $_.fullname z:\bac\ -force
          }
       } else {
          "File with name 'c:\somepath\$($_.name)' exist and could not be copied"
       }
    }

     

    The opinion expressed by me is not an official position of Microsoft

    7 ноября 2018 г. 10:56
    Модератор
  • по первой части если вы предоставите детали смогу ответить конкретно а так создаете хеш таблицу где прописываете соответствие папки серверу далее через foreach проходитесь по хеш таблице и левую часть подставляете в левую часть copy-item а правую часть соответвенно в правую часть.

    что до телеграма то поищите готового бота так как судя по вопросу, его написание займет много времени.


    The opinion expressed by me is not an official position of Microsoft

    7 ноября 2018 г. 13:41
    Модератор
  • Собственно мое тз.

    1. все фалы выложены в z:\planupload файлы выкладывает
    2. перед копированием нужно проверять имя файла, формат должен быть “mm_yyyy.xls” (месяц_год.xls)
    3. Делаем копирование на расчетные севера в папку c:\data
    4. Убеждаемся что файлы скопированы
    5. Перемещаем старые файлы в папку bak

    я видел ваше тз в вопросе и предоставил вариант решения, но сразу после этого начали выясняться подробности что диск с которого вы собираеьесь копировать не подключен и bac находится на другом сервере и не появилась понимания в отношении того что находится внутри z:\planupload и если конечных серверов больше одного то на какой и какие файлы должны копироваться. 

    то что вы написали это может быть проектом но никак не тз


    The opinion expressed by me is not an official position of Microsoft

    8 ноября 2018 г. 8:46
    Модератор
  • нет, у вас 2 меняющихся параметра - имя каталога и ip адрес

    хеш таблица должна иметь вид:

    $ht = @{ 'akva' = '1.2.3.4';
         'gal' = '2.3.4.5';
         ...
         'test' = 3.4.5.6'}



    The opinion expressed by me is not an official position of Microsoft

    8 ноября 2018 г. 9:51
    Модератор
  • $params = @{
        'akva' = '10.10.1.10';
        'gal' = '10.17.1.10';
        'ital' = "10.14.1.10"
    }
    
    Foreach ($key in $params.keys) {
        $SourceFolder = "Z:\PlanUpload\$key"
        $DestinationFolder = "\\$($params[$key])\data\$key"
        Write-Host "Start working with '$key' directory"
        Get-ChildItem $SourceFolder -Recurse -File | foreach {
            $DestinationFilePath= $_.FullName.Replace($SourceFolder, $DestinationFolder) 
            if ((!(Test-Path $DestinationFilePath)) -or ($_.LastWriteTime -gt (Get-Item $DestinationFilePath).LastWriteTime)){
                if (!(Test-Path $DestinationFilePath)){
                    Write-Host "File '$DestinationFilePath' does not exist and would be copied" -ForegroundColor Green
                }
                else {
                    Write-Host "File '$DestinationFilePath' older than the same file in a source folder" -ForegroundColor Green
                }
                Copy-Item $_.FullName $DestinationFilePath -Force
            }
            elseif ((Get-FileHash $_.FullName).hash -eq (Get-FileHash $DestinationFilePath).hash){
                Write-Host "Files '$($_.name)' in souce and destination folder are the same. `r`nFile $($_.fullname) would be skipped" -ForegroundColor Yellow
            }
            else{
                Write-Host "Some message could be here..."
            }
        }
    }


    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа KazunEditor 19 ч. 35 мин. назад
    8 ноября 2018 г. 11:24
    Модератор
  • Спасибо! А как в конце скрипта прописать чтобы в случае успешного выполнения слало письмо на почту об успехе, а в случае ошибке письмо об ошибке?
    9 ноября 2018 г. 8:59
  • Спасибо! А как в конце скрипта прописать чтобы в случае успешного выполнения слало письмо на почту об успехе, а в случае ошибке письмо об ошибке?
    help send-mailmessage -full

    The opinion expressed by me is not an official position of Microsoft

    9 ноября 2018 г. 9:26
    Модератор
  • Это то я понимаю, мне надо чтобы по разным результатам скрипта отправлялись разные письма, типа if success=true send mail....

    else success=false send another mail


    9 ноября 2018 г. 9:38
  • ну так после copy-item у вас будет success a в else будет failure

    The opinion expressed by me is not an official position of Microsoft

    9 ноября 2018 г. 10:12
    Модератор