Movendo pastas com o mesmo nome para outra pasta

Nov 28 2020

Tenho pastas de relatório com nomes exclusivos de pasta pai, como:

C:\User\USER\Downloads\LTFT01\Report
C:\User\USER\Downloads\LTFT02\Report

Fiz um script que altera o nome da pasta 'Relatório' para incluir o nome de sua pasta pai e mover essa pasta para outro lugar (por exemplo, Relatório -> Relatório LTFT01). No entanto, agora estou tendo um problema em que, uma vez que isso seja feito uma vez, o segundo relatório (feito na pasta original) tem o mesmo nome daquele que movi anteriormente e se recusa a mover. Aqui está o código abaixo:

#Get report folder path
$ReportPath = "C:\Users\USER\Downloads\*\Report" $MasterReportPath = "C:\Users\USER\Downloads\MasterReports"

#Rename report folder to {currentparentname}report
Get-Item -Path $ReportPath | ForEach-Object {$a = $_.FullName | split-path -Parent | split-path -leaf; Rename-Item -Path $_.FullName -NewName $a"Report"} #Move report folder $AnyNamedReportFolder = Get-Item "C:\Users\USER\Downloads\*\*Report*" -Exclude *.jmx, *.csv
Move-Item -Path $AnyNamedReportFolder -Destination $MasterReportPath

Portanto, após a 3ª execução de um relatório, o 2o relatório (da 2ª execução) não será movido, pois LTFT01Report (exemplo) já existe em $ MasterReportPath.

Acho que preciso acrescentar ou acrescentar um número com base no que já existe e incrementar com base nisso. Exemplo, se LTFT01Report já existir em $ MasterReportPath, a 2ª execução do mesmo relatório deve ser renomeada de LTFT01Report para LTFT01Report2 ou algo para diferenciar.

No entanto, não estou familiarizado com os cmdlets do PowerShell que me ajudariam a fazer isso, mas estarei pesquisando. Nesse ínterim, se alguém pudesse me cutucar na direção certa, seria muito útil!

Respostas

Adil.yuken Nov 30 2020 at 11:37

Bem, acabei criando a resposta felizmente:

#Get report folder path
$ReportPath = "C:\Users\USER\Downloads\TestPlans\*\Report" $ReportInNamePath = "C:\Users\USER\Downloads\TestPlans\*\*Report*"
$MasterReportPath = "C:\Users\USER\Downloads\MasterReports" #Rename report folder Get-Item -Path $ReportPath | ForEach-Object {$a = $_.FullName | split-path -Parent | split-path -leaf; Rename-Item -Path $_.FullName -NewName $a"Report"}

#Append Date and Time
Get-Item -Path $ReportInNamePath | ForEach-Object {$a = $_.FullName | split-path -leaf; Rename-Item -Path $_.FullName -NewName ($a + $_.CreationTime.ToString("yyyMMdd-HHmmss"))}

#Move report folder
$AnyNamedReportFolder = Get-Item $ReportInNamePath -Exclude *.jmx, *.csv
Move-Item -Path $AnyNamedReportFolder -Destination $MasterReportPath

As duas coisas que fiz:

  1. Anexe a data de criação da pasta ao final do nome do arquivo DEPOIS de adicionar o nome pai. Por exemplo, Relatório -> LTFT01Report20201130-112918. Isso ajuda a criar nomes de pasta de relatório exclusivos para qualquer teste, mesmo os mesmos testes executados várias vezes.
  2. Assegurou-se de que a localização da pasta MasterReports não caísse no primeiro curinga, já que também estava alterando os nomes dos relatórios filho dentro dela. Acabei de subtender todas as pastas no mesmo nível que MasterReports de outro pai. Então, por exemplo:

C:\Users\USER\Downloads\LTFT01 -> C:\Users\USER\Downloads\TestPlans\LTFT01