尝试使脚本在目录中搜索包含特定扩展名文件的文件夹,然后移动它,目录层次结构保持不变

时间:2016-04-02 17:04:25

标签: windows powershell

我想编写一个脚本来搜索目录,让我们说C:\books,然后在子目录中搜索特定扩展名的文件,让我们说{{1} } 例如。

然后,如果文件夹包含此类文件,我想将文件夹层次结构完整移动到新目录。因此,我们要说.mp3包含C:\books\harry_potter\goblet文件,在请求确认后会移至.mp3

我认为PowerShell cmdlet C:\audiobooks\harry_potter\goblet是我用Get-ChildItem进行管理的最佳选择,但我是PowerShell脚本的完整菜鸟。我真的很感激任何建议。

1 个答案:

答案 0 :(得分:0)

这样的东西会在集合的根目录中完成:

(ls *.mp3 -recurse) | % { split-path $_ } | sort -u | % { cp $_ $_.Replace('c:\books', 'c:\audiobooks') }

我使用cp代替mv来测试它而不移动文件。说明:ls返回所有文件,%然后获取其父项,sort -u删除父项之间的重复项,最后一个命令将每个父项移动到新位置。