Перемещение содержимого папки в родительскую папку

Перемещение содержимого папки в родительскую папку

Вот моя текущая структура папок на компьютере с Windows 7:

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

В этой структуре на каждом уровне имеется дублирующаяся папка, например nope\nope.

Я хотел бы переместить каждый файл в каждой папке на уровень выше, чтобы устранить этот дубликат (обратите внимание, что для простоты я указал по одному файлу в каждом каталоге, но файлов с разными расширениями может быть несколько).

Это то, что я пробовал с помощью PowerShellиз этого ответа:

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

К сожалению, я получаю эту ошибку:

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

Я думаю, что происходит что-то подозрительное, потому что в родительской и дочерней папках есть дублирующееся имя. Я также пробовал указать -Forceв mvоператоре , но это привело только к удалению файлов, оставив папки такими, какие они есть (к счастью, я настроил тестовую среду, прежде чем делать это!).

Что я упускаю? К сожалению, я совсем новичок в написании сценариев PS, спасибо.

решение1

Move-Itemпринимает пути как строки, и при .directory.parentприведении к строке это либо пустая строка, либо просто одно имя каталога, похоже, это не полный путь к родительской папке.

Пытаться:

$_.directory.parent.FullName

или

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

Связанный контент