代码之家  ›  专栏  ›  技术社区  ›  Jim Fell

批处理脚本找不到现有目录

  •  0
  • Jim Fell  · 技术社区  · 9 年前

    在向用户发出一系列提示后,我的批处理脚本组合了一个目录路径:

    set RELEASE_PATH=!RELEASE_DRIVE!:\!CUSTOMER!\files\!RELEASE_LABEL!
    

    我面临的问题是试图检测此路径末尾的文件夹是否已存在。您可能认为这很简单,但路径评估总是失败,即使路径存在。然而,当我运行相同的 if 语句,它可以工作-_-

    if not exist !RELEASE_PATH! (
      echo DEBUG: Path %CD%\%RELEASE_LABEL% exists
      mkdir %RELEASE_LABEL%
    ) else (
      echo DEBUG: Path %CD%\%RELEASE_LABEL% does not exist
    )
    

    运行批处理文件时总是回显 DEBUG: Path %CD%\%RELEASE_LABEL% does not exist 尽管事实上确实存在。仅供参考,我都有 EnableExtentions EnableDelayedExpansion 设置

    典型的发布路径可能是 R:\Widget_Co\files\Release_12.1 如有任何想法或想法,将不胜感激。

    1 回复  |  直到 9 年前
        1
  •  0
  •   Jim Fell    9 年前

    我认为这个问题与 EnableDelayedExpansion 正在设置。我能够使用for循环将这项工作组合起来:

    rem ## This clunky workaround with the for loop is required because a simple
    rem ## `if not exist` command isn't working. It is believed that this has
    rem ## something to do with EnableDelayedExpansion being set.  There is only one
    rem ## element in the RELEASE_PATH variable being evaluated in this loop.
    
    for /F %%i in ("!RELEASE_PATH!") do (
      if not exist %%i (
        mkdir %%i
      )
    )