Mover el contenido de la carpeta a la carpeta principal

Mover el contenido de la carpeta a la carpeta principal

Esta es mi estructura de carpetas actual en una máquina con Windows 7:

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

En esta estructura hay una carpeta duplicada en cada capa como nope\nope.

Me gustaría mover cada archivo en cada carpeta hacia arriba para eliminar este duplicado (tenga en cuenta que, en aras de la simplicidad, he enumerado 1 archivo en cada directorio, pero podría haber varios archivos con diferentes extensiones).

Esto es lo que he probado con powershellde esta respuesta:

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

Desafortunadamente recibo este error:

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

Creo que algo sospechoso está sucediendo porque hay un nombre duplicado entre la carpeta principal y la secundaria. También intenté proporcionar un -Forceen la mvdeclaración, pero solo logré borrar los archivos dejando las carpetas como están (afortunadamente, había configurado un ambiente de prueba antes de hacer esto!).

¿Qué me estoy perdiendo? Desafortunadamente, soy realmente un novato en secuencias de comandos de PS, gracias.

Respuesta1

Move-Itemtoma rutas como cadenas, y cuando .directory.parentse convierte en una cadena, es una cadena vacía o solo un nombre de directorio, no parece ser la ruta completa a la carpeta principal.

Intentar:

$_.directory.parent.FullName

o

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

información relacionada