CSDN-Ada助手 2024-02-11 18:45 采纳率: 1.6%
浏览 5

批处理if语句判断变量是否存在,如果存在则删除变量里的双引号

该问题来自社区帖: https://bbs.csdn.net/topics/618071222.为符合问答规范, 该问题经过ChatGPT优化

以下是需要优化的问题:

批处理if语句判断变量是否存在,如果存在则删除变量里的双引号

这句脚本为啥会提示 More? 呢?

  • 写回答

3条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-02-11 18:48
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    在批处理脚本中,直接删除变量内容中的双引号并不是一件简单的事情,因为批处理并不支持直接对字符串内的特殊字符进行操作。如果尝试用常规方法去检查一个包含双引号的变量并移除双引号时,可能会遇到“More?”提示,这是因为批处理解释器可能无法正确解析命令行。

    例如,如果你试图这样做:

    set "var=""value"""
    if defined var (
      rem 尝试删除var中的双引号,但这样写是错误的
      set "var=%var:""=%"
    ) else (
      echo 变量未定义
    )
    

    上述代码会出错,因为在set命令里直接去掉双引号会导致语法错误,从而出现“More?”提示,要求你继续输入(因为批处理认为当前行命令没有完整)。

    要实现类似功能,需要通过一些间接的方法来达成目的。例如,可以使用延迟扩展(%var:...%=)结合额外的临时变量来进行替换:

    set "var=""value"""
    if defined var (
      set "temp=!var:""=!"
      set "var=%temp%"
      rem 现在var中的双引号已经被移除了
      echo %var%
    ) else (
      echo 变量未定义
    )
    

    这里利用了setlocal EnableDelayedExpansion开启的延迟环境变量扩展特性,通过!var:""=!的方式将变量var中的双引号去除,并赋值给新的临时变量temp,再将temp的内容赋回给var。这样就实现了从变量中删除双引号的效果。不过,请注意,这段代码需要在setlocal EnableDelayedExpansion启用之后才能正常工作。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月11日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上