【问题标题】:How to set a PATH to a batch file in windows如何在 Windows 中将 PATH 设置为批处理文件
【发布时间】:2013-07-11 12:02:36
【问题描述】:

在 Windows 中,我有两个 .bat 文件,分别是 dir_a/a.bat 和 dir_b/b.bat。

我想要的是,在执行完a.bat之后,我就能调用b.bat了。我现在的方法是设置一个 PATH 到 dir_b,所以在执行 a.bat 的终端中,我只需调用 b.bat 就可以执行 b.bat。然而将“set PATH=dir_b;%PATH%”放在 a.bat 中是行不通的。我做错了什么?

【问题讨论】:

    标签: batch-file path cmd


    【解决方案1】:

    不要使用 PATH,因为它与 Windows 路径冲突。相反,您可以添加以下内容:

    pushd path_to_your_dir_b
    

    然后在合适的地方添加popd

    【讨论】:

      【解决方案2】:

      您必须在 b.bat 文件中包含 绝对 路径;例如:

      set PATH=C:\User A\Folder X\dir_b;%PATH%
      

      【讨论】:

        【解决方案3】:

        我怀疑你在a.bat 中有一个SETLOCAL。当达到匹配的ENDLOCAL(或同一上下文中的EOF)时,在 SETLOCAL 之后所做的任何环境更改都会被撤销。

        根据您终止a.bat 的方式,您需要按ENDLOCAL&set "Path=dir_b;%PATH%"&GOTO :EOF 的顺序添加一些东西,这将在您现有的路径之前添加dir_b,因为您似乎希望在该特定CMD 会话期间。

        【讨论】:

          【解决方案4】:

          对于您正在处理相对路径的情况: 您可能会注意到:

          set path=%path%;"\..\..\..\vc98\bin\"
          

          会^^ 不起作用 ^^!

          所以这样做:

          pushd "..\..\..\vc98\bin\"
          path %cd%; %path%
          popd
          

          ...当然还有一个 设置路径=%path%;%cd% 在 pushd 和 popd 之间也可以解决问题

          也可以看看这里: https://stackoverflow.com/a/6595206/3135511

          ...
          call :setAbsPath ABS_PATH ..\
          ...
          

          ^-通过自制子函数'setAbsPath'来查看 -> 或者代替 call 您也可以使用 For - 其他线程中的详细信息


          对于那些可能还想在不安装 Microsoft Visual C++ 6.0(anno 1998) > 的情况下运行的人来说,这只是一个小提示... ...并想知道那个 f***“标准”包括在哪里?!

          \vc98\include\ 中大约有 17 个文件已手动切割 8 + 3 个字符。喜欢:
          算法 -> 算法
          流-> 流
          异常 -> 异常

          所以请注意并有创意!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-10-31
            • 2012-07-07
            • 1970-01-01
            • 2010-10-24
            • 2020-02-09
            • 2018-03-07
            • 1970-01-01
            • 2018-11-07
            相关资源
            最近更新 更多