Copiar arquivo para uma pasta com base na pasta criada a partir do arquivo

votos
0

Eu tenho um script PowerShell que olha em um diretório e se quaisquer tipos de arquivo .xlsx estão lá ele cria uma pasta com base no nome do arquivo de cada tipo de arquivo xlsx e copia o arquivo para cada pasta. Essa parte funciona. O que eu preciso fazer agora é copiar arquivos de \\ paculfs3 \ Deptfiles \ SharedFiles \ Compliance \ Criação de Certificação \ Staging para cada pasta quando ele é criado.

Aqui está o meu código:

$SourceFolder = \\paculfs3\Deptfiles\SharedFiles\Compliance\Certification Creation
$TargetFolder = \\paculfs3\Deptfiles\SharedFiles\Compliance\Certification Creation

Get-ChildItem -Path $SourceFolder -Filter *.xlsx | ForEach-Object {
    $ChildPath = Join-Path -Path $_.Name.Replace('.xlsx','') -ChildPath $_.Name

    [System.IO.FileInfo]$Destination = Join-Path -Path $TargetFolder -ChildPath $ChildPath

    if (-not (Test-Path -Path $Destination.Directory.FullName)) {
        New-Item -ItemType Directory -Path $Destination.Directory.FullName
    }

    Copy-Item -Path $_.FullName -Destination $Destination.FullName
    Copy-Item -Path \\paculfs3\Deptfiles\SharedFiles\Compliance\Certification Creation\Staging\Compliance Webinar Certificate Template (1).docx -Destination $Destination -Force
    Copy-Item -Path \\paculfs3\Deptfiles\SharedFiles\Compliance\Certification Creation\Staging\Email Mail Merge for Certificates.docx -Destination $Destination -Force
    Copy-Item -Path \\paculfs3\Deptfiles\SharedFiles\Compliance\Certification Creation\Staging\Manual Attendee Info List.xlsx -Destination $Destination -Force
}
Publicado 27/11/2018 em 18:07
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

IMO você complicar as coisas, para acrescentar o nome sem extenson simplesmente Join-Path $TargetPath $_.BaseName

Para reduzir a redundância com as mesmas pathes longos usar a variável já definida.

$SourceFolder = "\\paculfs3\Deptfiles\SharedFiles\Compliance\Certification Creation"
$TargetFolder = "\\paculfs3\Deptfiles\SharedFiles\Compliance\Certification Creation"

Get-ChildItem -Path $SourceFolder -Filter *.xlsx | ForEach-Object {
    $Destination = Join-Path -Path $TargetFolder -ChildPath $_.BaseName
    New-Item -ItemType Directory -Path $Destination -Force | Out-Null
    $_ | Copy-Item -Destination $Destination
    Copy-Item -Path "$SourceFolder\Staging\Compliance Webinar Certificate Template (1).docx" -Destination $Destination -Force
    Copy-Item -Path "$SourceFolder\Staging\Email Mail Merge for Certificates.docx" -Destination $Destination -Force
    Copy-Item -Path "$SourceFolder\Staging\Manual Attendee Info List.xlsx" -Destination $Destination -Force
}
Respondeu 27/11/2018 em 19:36
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more