在Powershell中,如何將文件夾中的所有文件移動到新的子目錄?將文件夾中的所有文件移動到新的子目錄
我試過mv c:\foo\* c:\foo\bar\
,但是我所有的文件都消失了,我得到一個擴展名較小的'bar'文件。首先製作目錄也不起作用,因爲它會嘗試將「欄」移動到其自身。
在Powershell中,如何將文件夾中的所有文件移動到新的子目錄?將文件夾中的所有文件移動到新的子目錄
我試過mv c:\foo\* c:\foo\bar\
,但是我所有的文件都消失了,我得到一個擴展名較小的'bar'文件。首先製作目錄也不起作用,因爲它會嘗試將「欄」移動到其自身。
您可以輕鬆鏈接Get-ChildItem
(別名爲dir)和Move-Item
(別名爲mv),以便在一條簡單的線上執行移動。唯一真正的技巧是,你需要指定-Destination
參數(簡稱-dest):
dir c:\foo\* | mv -dest c:\foo\bar
還有一兩件事值得一提,你可能要過濾掉的目錄 - 在你的情況下吧foo的嵌套 - 它嘗試將其移動到自身並沒有任何意義,並且會出現錯誤。如果您需要通過Where-Object
過濾掉的目錄,你只管它(別名爲?)的cmdlet:
dir c:\foo\* | ? {-not $_.PSIsContainer} | mv -dest c:\foo\bar
的$_
是因爲它是由Where-Object
認爲指向每個對象在管道中的自定義變量小命令。 PSIsContainer
屬性是添加到文件系統對象的特殊註釋屬性,可以輕鬆識別文件夾(或不是)。
還值得一提的是,在PowerShell中v3中,它們都添加和-File
向-Directory
的Get-ChildItem
cmdlet將使其易於完全跳過where子句,只是把它做初步篩選。
這應該做你想做的。首先創建一個名爲$myDir
的變量,它具有所需父目錄的完整路徑。
New-Item $myDir"\TestDirectory" -type directory
$files = Get-ChildItem $myDir\*.*
Move-Item $files $myDir"\TestDirectory"
使用單一*
也將選擇子目錄,這可能是你的問題的一部分,如果你在不經意間選擇的新目錄中移動,也可以作爲在同一行動目標。 *.*
應該匹配文件。一旦你對他們正在做的事情感到滿意,隨意濃縮這些陳述。
這個解決方案教會了我可以在命令行上使用變量,並且可以手動執行我通常會考慮的操作一個腳本。 – SixOThree
嘗試使用'mv c:\ foo \ * c:\ foo \ bar' –