我正在尝试循环遍历一个目录下的音乐文件。为什么 FILENAME 变量似乎每次循环都具有相同的值?它似乎在循环遍历文件,但是当我回显值时,FILENAME 似乎与第一次循环时相同。
SETLOCAL EnableDelayedExpansion
cd D:\Playground
FOR /F "tokens=*" %%M IN ('dir /b /s *.mp3 *.mp4 *.m4a') DO (
set DIRNAME=%%~pM
set DRIVELETTER=%%~dM
set FILENAME=%%M
set EFILENAME=%FILENAME:\=\\%
set EDIRNAME=%DIRNAME:\=\\%
echo "FILENAME: "
echo %FILENAME%
)
答案1
在批处理文件的开头某处使用它:
SETLOCAL 启用延迟扩展
接下来引用文件名时必须使用感叹号而不是百分号。
SETLOCAL EnableDelayedExpansion
cd D:\Playground
FOR /F "tokens=*" %%M IN ('dir /b /s *.mp3 *.mp4 *.m4a') DO (
set DIRNAME=%%~pM
set DRIVELETTER=%%~dM
set FILENAME=%%M
set EFILENAME=!FILENAME:\=\\!
set EDIRNAME=!DIRNAME:\=\\!
echo "FILENAME: "
echo !FILENAME!
)