例如,我有这样的循环,在名称包含百分号的文件夹上调用dir,因此解释器尝试将这些字符之间的字符解析为变量.这样的文件夹例如在虚拟化解决方案(例如ThinApp)中是常见的,即将存储在本地用户AppData中的数据改为写入例如:X:\ My Virtualized App \%AppData%.
当然我知道可以通过将%加倍来实现它,但是不可能说服解释器在for循环中不解析这样的变量,例如:
FOR /F "tokens=*" %%F IN ('dir /b /s X:\myapp\%AppData% ') DO @( echo %%F )
在这里,无论我尝试什么,加倍,四倍的百分比,或添加插入没有任何区别.传递给dir命令的路径已解析appdata,因此具有两个驱动器规范无效.
@ECHO OFF &SETLOCAL FOR /F "delims=" %%F IN ('echo X:\myapp\%AppData%') DO ( echo %%F ) FOR /F "delims=" %%F IN ('echo X:\myapp\^^%%AppData^^%%') DO ( echo %%F ) FOR /F "delims=" %%F IN ('echo "X:\myapp\^^%%AppData^^%%"') DO ( echo %%F ) FOR /F "delims=" %%F IN ('echo ^^"X:\myapp\^%%AppData^%%^"') DO ( echo %%F )
输出:
X:\myapp\C:\Users\User\AppData\Roaming X:\myapp\%AppData% "X:\myapp\^^%AppData^^%" "X:\myapp\%AppData%"