2017-03-16 84 views
-3

Hello Power Shell Champs,根據文件名的一部分將文件移動到另一個文件夾

我有這種情況。

我身邊有100個文件在C國名的例子:\作爲報道:

  • 報告文件,USA.ppt
  • 報告文件,Canada.ppt
  • 報告文件,Brazil.ppt
  • 報告文件,Chile.ppt

我有國名也是在文件夾C文件夾:\國家

我想要做的是將基於國家名稱的文件移動到基​​於國家名稱的相應文件夾中。

我可以創建一個循環工作。 注:的目標文件夾已經創建,只需要移動

+1

歡迎到現場,阿非索爾。你能否展示你迄今爲止所寫的內容,以便我們能夠幫助你解決遇到的問題。您可以參考https://stackoverflow.com/help/how-to-ask獲取有關如何在本網站上提問的指導。 –

+0

您有多個答案張貼,如果您發現任何這些幫助請upvote或選擇一個作爲您的問題的答案,謝謝。 –

回答

-1

雖然一些代碼從你身邊,看你已經走了多遠將是有益的文件,我想這樣的事情應該做的伎倆: (編輯)

$list = (Get-ChildItem -Path C:\reports\ -Name -File).Replace('Report File-','').Replace('.ppt','') 

foreach ($item in $list) { 
Move-Item -Source ".\Report File-$($item).ppt" -Destination "C:\Countries\$($item)\" 
} 
0

正如Maigi提到,這裏是工作的代碼,它實際上使用Move-Item正如你在原來的職位,而不是Copy-Item要求。

此代碼已經過測試並且可以正常工作。

$list = (Get-ChildItem -Path C:\reports\ -Name -File).Replace('Report File-','').Replace('.ppt','') 

ForEach-Object ($item in $list) 
{ 
    Move-Item -Path "C:\reports\Report File-$($item).ppt" -Destination "C:\Countries\$($item)\" 
} 
0

總是有一種以上的方法在PowerShell中完成一項任務: 這個腳本

  • 分裂的連字符的基本部分,並採取(從零開始)第二部分
  • 如果目標路徑不存在它創建。

Get-ChildItem 'C:\reports\Report File-*.ppt' -File | ForEach-Object{ 
    $Country = Join-Path "C:\Country" $($_.BaseName.split('-')[1]) 
    If (!(Test-path $Country)) {mkdir $Country|Out-Null} 
    $_|Move-Item -Destination $Country -whatif 
} 

如果輸出看起來不錯,除去-whatif

相關問題