Copie arquivos de uma pasta para outra com prefixo aleatório

0

Estou tentando copiar arquivos de uma pasta para outra. Eu tenho algum tipo de prefixo aleatório em meus arquivos. mas eu tenho a última parte do nome do arquivo em um arquivo csv.

New-Item -ItemType Directory -Path "\newpart\xxx\$((Get-Date).ToString('dd-MM-yyyy'))_test" -Force
Import-Csv '\csvpath\xxx\file.csv' | 
  ForEach {Copy-Item -path \oldpath\xxx\* -filter $($_.Fil) "\newpath\xxx\$((Get-Date).ToString("dd-MM-yyyy"))_text" }

meus arquivos parecem assim:

{001588D8-5FF0-409C-9BF7-A3AE6D0B26CF} - AppImage20160520115646078.jpg

O arquivo CSV tem apenas essa parte do nome do arquivo:

AppImage20160520115646078.jpg
    
por Daniel Christensen 02.02.2017 / 20:30

2 respostas

0

Use o curinga * em -filter "*$($_.Fil)" .

Por outro lado, o Copy-Item documentation diz que Seu parâmetro -Path não aceita caracteres curinga .

$newTarget = "\newpart\xxx\$((Get-Date).ToString('dd-MM-yyyy'))_test"
New-Item -ItemType Directory -Path "$newTarget" -Force
Import-Csv '\csvpath\xxx\file.csv' | 
    ForEach { 
        Get-ChildItem "\oldpath\xxx\*$($_.Fil)" -File -ErrorAction SilentlyContinue |
            ForEach { Copy-Item -path $PSItem.FullName -Destination "$newTarget" }
    }

ou (talvez melhor)

$newTarget = "\newpart\xxx\$((Get-Date).ToString('dd-MM-yyyy'))_test"
New-Item -ItemType Directory -Path "$newTarget" -Force
Import-Csv '\csvpath\xxx\file.csv' | 
    ForEach { 
        Get-ChildItem "\oldpath\xxx\*$($_.Fil)" -File -ErrorAction SilentlyContinue |
            Copy-Item -Destination "$newTarget"
    }
    
por 06.02.2017 / 21:29
0

Você deve conseguir fazer isso em um arquivo de script, por exemplo, Copy-FilesFromCsv.ps1:

#mkdir files
#touch "files\{001588D8-5FF0-409C-9BF7-A3AE6D0B26CF} - AppImage20160520115646078.jpg"

$csvPath = "$PSScriptRoot\" # "\csvpath\xxx\"
$sourceFolder = "$PSScriptRoot\files\"
$newFolder = "$PSScriptRoot\files\$((Get-Date).ToString('dd-MM-yyyy'))_test"
New-Item -WhatIf -ItemType Directory $newFolder -Force


ForEach ($file in $(Import-Csv "${csvPath}file.csv"))
{
    Copy-Item -WhatIf -Path "$sourceFolder*$($file.Fil)" -Destination $newFolder
}
    
por 06.02.2017 / 18:03