如何防止Windows批处理文件中的for循环中的变量解析(或转义百分号)?

 dcl9784752 发布于 2023-02-13 21:40

例如,我有这样的循环,在名称包含百分号的文件夹上调用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,因此具有两个驱动器规范无效.

1 个回答
  • 逃避的短期课程.

    @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%"
    

    2023-02-13 21:49 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有