將資料夾內容移至父資料夾

將資料夾內容移至父資料夾

這是我在 Windows 7 機器中目前的資料夾結構:

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

在此結構中,每一層都有一個重複的資料夾,例如nope\nope.

我想將每個資料夾中的每個文件上移一個等級以消除這種重複(請注意,為了簡單起見,我在每個目錄中列出了1 個文件,但可能有多個具有不同擴展名的文件)。

這是我用 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}

我認為發生了一些可疑的事情,因為父資料夾和子資料夾之間存在重複的名稱,我也嘗試-Forcemv聲明中提供a ,但它只能真正刪除文件,使資料夾保持原樣(幸運的是,我設定了一個在執行此操作之前測試環境!

我缺什麼?不幸的是我真的是PS腳本新手,謝謝。

答案1

Move-Item將路徑作為字串,當.directory.parent轉換為字串時,它要么是一個空字串,要么只是一個目錄名稱,它似乎不是父資料夾的完整路徑。

嘗試:

$_.directory.parent.FullName

或者

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

相關內容