在一个文件夹中有16.000个mp3文件.如何使用过滤器将它们放入文件夹



在一个文件夹中有一堆mp3文件,我希望每个艺术家都有自己的文件夹。我试过手动完成,但在放弃之前我只能完成大约5000次。

我想要的是一个命令或脚本,它可以让我根据文件名上的字符串进行筛选,然后将其移动到文件夹中。

谢谢!

PS:使用WIN7

这将处理文件夹中文件名中包含" - "的所有MP3文件。

它将把名为"Angels - One Child.mp3"的文件移到名为
的文件夹中Angels并将MP3文件重命名为One Child.mp3

注意1:AC - DC - Rock Me.mp3这样的文件名只能部分工作
因为文件夹将变成AC,而文件将被称为DC - Rock Me.mp3

注意2:可能无法正确处理包含^%的文件名。

它要求您像这样启动批处理文件:moveMP3.bat !
使用!作为第一个参数,这样它就不会意外地在另一个文件夹中运行。

@echo off
if not %1.==!. echo Moves filenames aaa - bbb.*.mp3 to a folder named aaa and filename bbb.* - Syntax: "%~0" ! & pause & goto :EOF
:: Moves filenames aaa - bbb.* to a folder named aaa
setlocal
for /f "delims=" %%a in ('dir "* - *.mp3" /a:-d /b') do call :go "%%a"
pause
goto :EOF
:go
set "name=%~n1"
set "num=0"
set "found="
:loop
set /a num=num+1
call set "name2=%%name:~%num%,3%%"
if "%name2%"==" - " set /a found=%num%
if not defined found goto :loop
:: name2 is the aaa part
call set "name2=%%name:~0,%num%%%"
:: name1 is the bbb part
set /a num1=num+3
call set "name1=%%name:~%num1%%%"
md "%name2%" 2>nul
echo moving "%~1"
   move "%~1" "%name2%" >nul
   ren "%name2%%~1" "%name1%%~x1"
goto :EOF

这将把文件名中有peter的所有MP3移动到名为peter 的文件夹中

@echo off
set "string=peter"
for %%a in ("*%string%*.mp3") do (
md "%string%" 2>nul
move "%%a" "%string%" >nul
)
pause

最新更新