要知道的三件事:百分号在批处理文件用来表示命令行参数:%1,%2,...介于两个百分号之间的任何字符将被解释为变量:echo %myvar%两个百分号之间(在批处理文件中)之间没有任何区别,将其视为命令(不是批处理文件)中的单个百分号:%%f为什么?例如,如果我们执行您的(简体)命令行FOR /f %f in ('dir /b .') DO somecommand %f在批处理文件中,规则2会尝试解释%f in ('dir /b .') DO somecommand %作为变量。为了防止这种情况,您必须应用规则3,然后再转义%第二条规则%:FOR /f %%f in ('dir /b .') DO somecommand %%f