如何在不更改目录的情况下运行BAT脚本?

时间:2011-02-14 13:10:26

标签: windows-7 batch-file

如何在不更改目录的情况下运行BAT脚本?

我在./a,脚本cd进入./a/bc。如果我出于任何原因需要终止我的脚本,我现在在bc而不是a。如何运行脚本而不更改文件夹?

另外,我不喜欢它是如何问我是否要终止我的脚本。我可以禁用它并让它终止吗?

4 个答案:

答案 0 :(得分:2)

您可以使用start yourscript.bat运行脚本。这使它在新的命令窗口中运行,因此不会影响启动脚本的命令提示符的工作目录。

另一种可能性是不使用 cd并使用绝对路径。

答案 1 :(得分:2)

第一个问题是:为什么需要更改目录?你能简单地使用相对于你的一个批处理文件的路径吗? (例如,使用%~dp0\a\bc引用目录)

但如果你真的需要这样做,你可以做到以下几点:

REM change the current directory
pushd ..\a\bc

.. do your stuff here

REM restore the old "current directory"
popd

答案 2 :(得分:2)

setlocal 命令对此非常有用。 setlocal 之后的任何目录更改都只是批处理脚本的本地目录。顺便说一句,这也适用于任何环境变量(设置命令)。

例如,运行此批处理脚本后:

cd /d c:\temp
setlocal
cd /d c:\windows

目录将是c:\ temp,因为脚本中的第二个cd只是脚本的本地。

答案 3 :(得分:1)

如果您不需要将环境变量更改传播到当前环境并且无法触及批处理文件(使用我通常使用的pushd / popd变体使用),您仍然可以生成cmd的新实例:

cmd /c myBatch.cmd arg1 arg2 ...

即使被调用的批处理引发错误,也具有保持原始批处理文件运行的良好属性。我在批量单元测试框架中这样做,例如,确保失败的批处理文件不会阻止测试执行。