cmd.exe - for循环和var值不变

cmd.exe - for循环和var值不变

我正在尝试循环遍历一个目录下的音乐文件。为什么 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!
   
)

相关内容