我有两个Windows批处理文件:a.bat和b.bat。
b.bat位于D:驱动器上,位于我的路径中
a.bat位于E:驱动器上,其中包含以下内容:
call b.bat
echo %thedrive%
b.bat中包含以下内容:
IF %~d0==D: (
SET %thedrive=testdrive
) ELSE (
SET %thedrive=livedrive
)
问题是%~d0正在获取b.bat所在的驱动器号,而不是调用(a.bat)批处理文件所在的驱动器。
如何让驱动器调用批处理文件?
答案 0 :(得分:1)
b.bat无法知道它是从另一个批处理文件中调用过来的,更不用说调用批处理文件所在的位置了。 b.bat可以知道的唯一方法是将信息作为参数传入,然后依靠调用者来传递信息。
根据您发布的代码,您似乎希望a.bat知道它所在的驱动器。如果是这样,您需要将代码从b.bat移动到a.bat。
如果您有许多需要设置thedrive
变量的.bat脚本,并且您不想在所有文件中包含所有逻辑,那么我会按如下方式更改b.bat:
IF /i %~d1==D: (
SET thedrive=testdrive
) ELSE (
SET thedrive=livedrive
)
每个a.bat脚本都必须使用:
调用b.batcall b.bat "%~f0"