Movendo o conteúdo da pasta para a pasta pai

Movendo o conteúdo da pasta para a pasta pai

Esta é minha estrutura de pastas atual em uma máquina com Windows 7:

---myfoolder
   |    
   +---nope              
   |   \---nope          
   |           nope.txt  
   |                     
   +---wtf               
   |   \---wtf           
   |           wtf.txt   
   |                     
   +---yep               
   |   \---yep           
   |           yep.txt   
   |                     
   \---zomg              
       \---zomg          
               zomg.txt  

Nesta estrutura existe uma pasta duplicada em cada camada como nope\nope.

Gostaria de mover cada arquivo em cada pasta para um nível acima para eliminar essa duplicata (observe que, para simplificar, listei 1 arquivo em cada diretório, mas pode haver vários arquivos com extensões diferentes).

Isso é o que eu tentei com o PowerShelldesta resposta:

gci -R | ?{!$_.PSIsContainer} | %{mv $_.fullname $_.directory.parent}

Infelizmente estou recebendo este erro:

mv : Cannot create a file when that file already exists.
At line:1 char:35
+ gci -R | ?{!$_.PSIsContainer} | %{mv $_.fullname $_.directory.parent}

Acho que algo suspeito está acontecendo porque há um nome duplicado entre a pasta pai e a pasta filho, tentei também fornecer um -Forcena mvinstrução, mas só consegui apagar os arquivos, deixando as pastas como estão (por sorte, eu configurei um ambiente de teste antes de fazer isso!).

o que estou perdendo? Infelizmente sou realmente um novato em scripts PS, obrigado.

Responder1

Move-Itemusa caminhos como strings e, quando .directory.parentconvertido em uma string, é uma string vazia ou apenas um nome de diretório, não parece ser o caminho completo para a pasta pai.

Tentar:

$_.directory.parent.FullName

ou

|%{ mv $_.FullName (Split-Path -Parent $_.Directory) }

informação relacionada