You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本需求:仅移动指定类型文件(.mp3)

解决PowerShell仅移动MP3文件的问题

看起来你之前的脚本方向有点偏,咱们一步步理清楚问题所在,再给你几个靠谱的解决方案:

问题出在哪?

你原来的脚本里,Where-Object { $_.PSIsContainer -eq $true }是只筛选文件夹,根本没处理文件!所以后面加的扩展名筛选自然不起作用,而robocopy $_.FullName "E:\Music\Compressed"是把每个子文件夹里的所有内容都复制过去,这就是为什么非MP3文件也被移过去了。

另外你尝试用-include "*.JPG"时,路径写成了"E:\Downloads\*",这会导致-Include参数不生效——当-Path带有通配符时,-Include的筛选逻辑会变,所以得调整路径写法。

靠谱的解决方案

方案1:用Get-ChildItem + Move-Item(最直观)

直接筛选MP3文件然后移动,语法简单易懂:

Get-ChildItem -Path "E:\Downloads" -Recurse -Include "*.mp3" | Move-Item -Destination "E:\Music\Compressed"

注意这里-Path不要加*,保持"E:\Downloads",这样-Include "*.mp3"和-Recurse配合才能正确遍历所有子文件夹里的MP3文件。

方案2:用Where-Object手动筛选(更灵活)

如果需要更复杂的筛选逻辑,比如同时满足多个条件,可以用这个写法:

Get-ChildItem -Path "E:\Downloads" -Recurse | 
  Where-Object { !$_.PSIsContainer -and $_.Extension -eq ".mp3" } | 
  Move-Item -Destination "E:\Music\Compressed"
  • !$_.PSIsContainer:排除文件夹,只处理文件
  • $_.Extension -eq ".mp3":只保留MP3格式的文件

方案3:用Robocopy(适合大量文件)

Robocopy是专门的文件复制/移动工具,处理大量文件时更稳定,还能显示进度。要移动MP3文件的话,用这个命令:

robocopy "E:\Downloads" "E:\Music\Compressed" *.mp3 /S /MOV
  • /S:遍历所有子文件夹(但不包括空文件夹)
  • /MOV:移动文件(复制完成后删除源文件)

内容的提问来源于stack exchange,提问作者Hayden Walmsley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:09:22