2015-03-26 2 views
0

У меня есть куча музыки на моей машине Windows, которая организована в папках по исполнителям, а затем по альбому. Я хотел бы скопировать все mp3s рекурсивно из всех папок и подпапок под основным каталогом в одно место.копирование всех mp3s рекурсивно в одну папку в Windows

Можно ли это сделать с помощью командной строки Windows?

+0

Я рекомендую использовать powershell для этого, он поставляется с предустановленными окнами. – VoidStar

+0

Спасибо. Можете ли вы сообщить мне, что такое синтаксис? – user2941841

ответ

0

давайте говорить, что мы имеем следующую структуру

  • C: \ Temp \ 1 \ musicfile.mp3
  • C: \ Temp \ 2 \ goodmusicfile.mp3
  • C: \ Temp \ 3 \ verygoodfile.mp3
  • C: \ Temp \ любой \ what.mp3

и мы хотим, чтобы скопировать все эти файлы в одну папку в

  • C: \ Temp \ все

создать битой файл внутри C: \ Temp \ для примера 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 \ все \ 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 
}}