将所有mp3递归复制到Windows中的单个文件夹中

时间:2015-03-26 00:51:30

标签: windows-console

我的Windows机器上有一堆音乐,由艺术家和专辑按文件夹组织。我希望将主目录下所有文件夹和子文件夹中的所有mp3递归复制到一个位置。

可以使用Windows命令行完成吗?

4 个答案:

答案 0 :(得分:0)

让我们说我们有以下结构

  • c:\ temp \ 1 \ musicfile.mp3
  • C:\ TEMP \ 2 \ goodmusicfile.mp3
  • C:\ TEMP \ 3 \ verygoodfile.mp3
  • C:\ TEMP \任何\ what.mp3

我们希望将所有这些文件复制到

中的单个目录中
  • C:\ TEMP \所有

在c:\ temp \中创建一个bat文件,例如copyallmp3.bat并编写以下代码

for /R "C:\temp" %%i in (*.mp3) do xcopy "%%i" "C:\temp\all" /y

运行copyallmp3.bat。 如果您导航到c:\ temp \ all,您将看到所有4个mp3文件。

如果您希望最终结果类似于(递归)

  • c:\ temp \ all \ 1 \ musicfile.mp3
  • C:\ TEMP \所有\ 2 \ goodmusicfile.mp3
  • C:\ TEMP \所有\ 3 \ verygoodfile.mp3
  • C:\ TEMP \所有\任何\ what.mp3

在powershell中使用以下代码

$Source = 'C:\temp'
$Files = '*.mp3'
$Dest = 'C:\temp\all'
Get-ChildItem $Source -Filter $Files -Recurse | ForEach{
    $Path = ($_.DirectoryName + "\") -Replace [Regex]::Escape($Source), $Dest
    If(!(Test-Path $Path)){New-Item -ItemType Directory -Path $Path -Force | Out-Null
    Copy-Item $_.FullName -Destination $Path -Force
}}

答案 1 :(得分:0)

您的代码启发了我完成类似的任务。我移动目录,文件包含一个指向我的新目的地的文件格式列表。然后我删除空文件夹。

$Source = 'D:\Téléchargements'
$Dest = 'D:\Musique'
# List of file format
$File = '*.mp3', '*.flac'

Get-ChildItem "$Source\*" -Include $File -Recurse –force -ErrorAction SilentlyContinue | ForEach{
    $FilePath = $_.DirectoryName
    # File directly in source dir
    If ($FilePath -eq $Source) { Move-Item $_.FullName -Destination $Dest -Force }
    Else {
        $DestPath = ("$FilePath\") -Replace [Regex]::Escape($Source), $Dest
        If ( !(Test-Path $DestPath) ) { New-Item -ItemType Directory -Path $DestPath -Force | Out-Null }
        Move-Item $_.FullName -Destination $DestPath -Force
        # Delete empty dir 
        If ((Get-ChildItem $FilePath).count -eq 0) { Remove-Item $FilePath -Force}
    }
}

答案 2 :(得分:0)

在Windows控制台中,命令是

xcopy "*".mp3 $from $to

$ from 应该是目标源的路径

$ to 应该是您来源的新路径

答案 3 :(得分:0)

假设目录的结构为artist/album/*.mp3

为复制的文件创建目录

mkdir new

转到您的音乐目录

cd g:/music

在您的.mp3后面加上三个*分隔的通配符\

cp "*/*/*.mp3" "g:/new"