当被调用的批处理驱动器位于不同的驱动器上时,如何获取调用批处理的驱动器号

时间:2015-04-22 14:04:46

标签: cmd

我有两个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)批处理文件所在的驱动器。

如何让驱动器调用批处理文件?

1 个答案:

答案 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.bat
call b.bat "%~f0"