Originally posted by lcleft at 2009-4-30 01:23:
if "%%~xi" equ ".mp3"
不明白 "%%~xi" 
看教程
FOR 变量参照的替换已被增强。您现在可以使用下列选项语法:
    
     ~I         - 删除任何引号("),扩充 %%I
     %%~fI        - 将 %%I 扩充到一个完全合格的路径名
     %%~dI        - 仅将 %%I 扩充到一个驱动器号
     %%~pI        - 仅将 %%I 扩充到一个路径
     %%~nI        - 仅将 %%I 扩充到一个文件名
     %%~xI        - 仅将 %%I 扩充到一个文件扩展名
     %%~sI        - 扩充的路径只含有短名
     %%~aI        - 将 %%I 扩充到文件的文件属性
     %%~tI        - 将 %%I 扩充到文件的日期/时间
     %%~zI        - 将 %%I 扩充到文件的大小
     %%~$PATH:I   - 查找列在路径环境变量的目录,并将 %%I 扩充
                   到找到的第一个完全合格的名称。如果环境变量名
                   未被定义,或者没有找到文件,此组合键会扩充到
                   空字符串
可以组合修饰符来得到多重结果:
     %%~dpI       - 仅将 %%I 扩充到一个驱动器号和路径
     %%~nxI       - 仅将 %%I 扩充到一个文件名和扩展名
     %%~fsI       - 仅将 %%I 扩充到一个带有短名的完整路径名
     %%~dp$PATH:i - 查找列在路径环境变量的目录,并将 %%I 扩充
                   到找到的第一个驱动器号和路径。
     %%~ftzaI     - 将 %%I 扩充到类似输出线路的 DIR
这里只给出一个例子,具体的读者可以在实际应用中细细体会。
例:
	@echo off
	for /r %%i in (*.txt) do (
	echo %%~zi    %%~ni
	)
	pause
结果:显示当前目录及其子目录下的所有txt文档,左半部分显示文件的大小,右半部分是文件名(不包含扩
展名)。
解说:“%%~zi”代表文件的大小,“%%~ni”代表文件名(不包含扩展名)。