我正在尝试将文件夹和文件拖到批处理文件上,并希望处理FILETYPES 递归处理也是我之所以追求的。 dir树看起来像: 我想按数值顺序处理上面的目录树。 我试图在这篇文章的帮助下使此功能工作,但这仅适用于单个文件类型。 编辑:我的尝试。代码中的注释和问题:.flac .mp3 .acc
仅如果目录/子目录包含这些Filetypes。/p>Z:Music
| 03 - I Love You (Booka Shade Remix).mp3
| 02 - Towers.mp3
|
+---Woodkid - 2013 - I Love You [FLAC]
| cover.jpg
| 02 - Towers.flac
| 01 - I Love You.flac
| 03 - I Love You (Booka Shade Remix).flac
|
+---No FLAC, MP3 or ACC folder
| cover.jpg
|
---Woodkid - 2013 - I Love You [MP3]
| cover.jpg
| 01 - I Love You.mp3
| 02 - Towers.mp3
| 03 - I Love You (Booka Shade Remix).mp3
|
---Woodkid - 2013 - I Love You [ACC]
| cover.jpg
| 01 - I Love You.acc
| 02 - Towers.acc
| 03 - I Love You (Booka Shade Remix).acc
Processing Directory: Z:Music
Processing File: 1 - 02 - Towers.mp3
Processing File: 1 - 03 - I Love You (Booka Shade Remix).mp3
Processing Directory: Woodkid - 2013 - I Love You [FLAC]
Processing File: 1 - 01 - I Love You.flac
Processing File: 1 - 02 - Towers.flac
Processing File: 1 - 03 - I Love You (Booka Shade Remix).flac
Processing Directory: Woodkid - 2013 - I Love You [MP3]
Processing File: 1 - 01 - I Love You.mp3
Processing File: 1 - 02 - Towers.mp3
Processing File: 1 - 03 - I Love You (Booka Shade Remix).mp3
Processing Directory: Woodkid - 2013 - I Love You [ACC]
Processing File: 1 - 01 - I Love You.acc
Processing File: 1 - 02 - Towers.acc
Processing File: 1 - 03 - I Love You (Booka Shade Remix).acc
@echo off
FOR %%I IN (%*) DO (
ECHO.%%~aI | FIND "d" >NUL
IF ERRORLEVEL 1 (
:: Processing Dropped Files
:: Only need folder (%%~dpI) to repeat once, this repeats for every dropped file.
echo %%~dpI
:: Would be nice if I could set a variable for file types at beginning of script
for /f "tokens=*" %%I in ('DIR /B/OGDN "%%~nI.flac" "%%~nI.mp3" "%%~nI.acc" 2^>NUL') DO (
echo Processing File: %%I
)
) ELSE (
:: Processing Dropped Folders
:: Need the directory echod here (just once).
:: Don't know how to process flac mp3 or acc files within the dropped folder recursively.
:: Be nice if I could set a variable for file types here too.
)
)
@pause
如果仅适用于几个扩展,则应该这样做。如果您有很多扩展名,那么构建列表并运行单个if
语句。
@echo off
for /f "tokens=*" %%i in ('dir /b /a-d /s %*') do (
if "%%~xi"==".flac" echo "%%i"
if "%%~xi"==".mp3" echo "%%i"
if "%%~xi"==".acc" echo "%%i"
)
pause
显然您将用实际命令替换回声。
编辑
这不是很快,因为它具有3个循环,但应该起作用。
@echo off
set "list=.flac .mp3 .aac"
for %%a in (%*) do (
if exist .nul @echo Processing Directory: %%a
for /f "tokens=*" %%i in ('dir /b /a-d /s %*') do (
for %%j in (%list%) do (
if "%%~xi"=="%%j" echo File Type is %%j - Processing file: "%%i"
)
)
)
pause
如果您只想在Processing file:
部分中显示文件名,只需将%%i
更改为%%~nxi