在 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 中是行不通的。我做错了什么?
在 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 中是行不通的。我做错了什么?
对于您正在处理相对路径的情况:您可能会注意到:
set path=%path%;"\..\..\..\vc98\bin\"
会^^不工作 ^^!
所以这样做:
pushd "..\..\..\vc98\bin\"
path %cd%; %path%
popd
...当然 ,在 pushd 和 popd 之间设置 path=%path%;%cd%也可以解决问题
好吧,也看看这里: https ://stackoverflow.com/a/6595206/3135511
...
call :setAbsPath ABS_PATH ..\
...
^-要通过自制的子函数' setAbsPath '来查看它 -> 或者代替调用,您也可以使用For - 其他线程中的详细信息
对于那些可能还想运行 Microsoft Visual C++ 6.0(anno 1998) > 而不安装它的人来说,这只是一个小注解……并且想知道那个 f***“标准”包括在哪里?!
\vc98\include\ 中大约有 17 个文件已手动切碎 8 + 3 个字符。喜欢:
算法 -> 算法
strstrem -> strstream
xception -> 异常所以要意识到这一点并有创意!
您必须包含b.bat 文件的绝对路径;例如:
set PATH=C:\User A\Folder X\dir_b;%PATH%
我怀疑你有一个SETLOCAL
in a.bat
。ENDLOCAL
当达到匹配时(或EOF
在同一上下文中),在SETLOCAL 之后所做的任何环境更改都会被撤销。
根据您的终止方式a.bat
,您需要在特定 CMD 会话期间按照您似乎期望的顺序添加到现有路径的某些内容ENDLOCAL&set "Path=dir_b;%PATH%"&GOTO :EOF
。dir_b
不要使用 PATH,因为它与 Windows 路径冲突。相反,您可以添加以下内容:
pushd path_to_your_dir_b
然后在合适的地方添加popd