在一个文件夹中有一堆mp3文件,我希望每个艺术家都拥有自己的文件夹。 我手动尝试过doind,但是在放弃之前我只能完成大约5000次。
我想要的是一个命令或脚本,让我按文件名中的字符串过滤,然后将其移动到文件夹中。
谢谢你!PS:使用WIN7
答案 0 :(得分:1)
此处理文件夹中文件名为" - "
的所有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