Gerenciamento de arquivos com o PowerShell

3

Então, me deparei com um assunto interessante.

Estou escrevendo um script do PowerShell para verificar a pasta "A" para nomes de arquivo idênticos, como encontrado na pasta "B". Se eles forem encontrados na pasta "A", eles serão movidos para a pasta "C". No entanto, se houver vários arquivos na pasta "A", preciso que eles sejam renomeados quando forem movidos para a pasta "C".

$folderA = 'S:\Folder A\' # Folder to remove cross-folder duplicates from
$folderB = 'S:\Folder B\' # Folder to keep the last remaining copies in
Get-ChildItem $folderB | ForEach-Object {
    $pathInA = $folderA + $_.Name
    If (Test-Path $pathInA) {Move-Item $pathInA -Destination 'S:\Folder C\'}
}

O que faz um ótimo trabalho em encontrar e mover, mas não muito renomeando. Alguma recomendação para mim?

EDIT: desculpe, eu deveria ter especificado. A maneira mais útil de renomear seria xy.txt > xy_1.txt .... ou .... xy.txt > xy (1) .txt

E a finalidade de renomea-los é que temos uma estrutura de arquivos onde criamos um pdf com uma assinatura digital para um recibo de mão para uma máquina que vem para ser trabalhada (Pasta A). Em seguida, ele é assinado por um técnico quando o trabalho é concluído e, quando isso acontece, é salvo em outra pasta (Pasta B). E, eventualmente, é pego de volta pelo cliente, que é um local totalmente diferente (Pasta D). Qual é outra assinatura e salva nessa pasta. Quando alcança a pasta D, todas as outras cópias são inúteis, pois não têm todas as assinaturas nelas e são apenas remanescentes. Eu realmente espero que faça sentido, e se isso não acontecer, por favor me avise.

    
por AeroEngi 27.02.2018 / 11:45

1 resposta

1

Você não mencionou como deseja renomear seus arquivos ou com que finalidade. ainda assim, isso fará o truque. agora apenas adicionará um número ao nome do arquivo. então xy.txt será xy1.txt na nova pasta, etc.

$i = 1
$FolderB = gci "S:\Folder B" | select -expand Name
$FolderA = gci "S:\Folder A" | ? { $_.Name -in $FolderB } | % {  
    Move-Item $_.FullName "S:\Folder C" -PassThru | 
    Rename-Item -NewName ($_.BaseName + $i + $_.Extension)
    $i++
}
    
por 27.02.2018 / 15:02