在 bat 中运行其他 cmd,就像从它自己的路径运行一样

在 bat 中运行其他 cmd,就像从它自己的路径运行一样

我需要在 cmd 批处理文件中运行 bat(fix.bat)(假设 c: 上的 sample.cmd)问题是尽管使用:start /WAIT cmd.exe /CD:\dev\sys\fix.bat

fix.bat 像从父命令 (c:\sample.cmd) 运行一样运行,但我需要强制它从其路径运行 ("d:\dev\sys")

如何在其他 bat 中运行 bat,以便第二个 bat 能够像从它所在的自己的路径执行一样运行?

例如,输入“cd d:\dev\sys”然后调用 fix.bat 会有所帮助,但我想避免这样做。

答案1

有多种选择:-

  1. 使用资源管理器创建链接:定位修复程序,右键单击,选择复制,右键单击其他地方并选择粘贴快捷方式;现在重命名以从名称中删除“快捷方式”以及“.bat”:然后将父命令更改为调用目录:\dev\sys\fix.lnk代替目录:\dev\sys\fix.bat并且链接将设置目录。
  2. 创建一个三行文件调用修复程序包含d:cd \dev\sysfix.bat:然后调用它而不是修复程序在你的父母命令中。
  3. 在您的父命令中使用start /WAIT cmd.exe /C "D: & cd \dev\sys & fix.bat"

如果您的需求发生变化,您的选择将取决于您认为哪种方式最容易维护和扩展。

答案2

你只有两个选择。

1)在sample.cmd脚本中更改当前目录:

pushd d:\dev\sys
start /wait cmd.exe /c fix.bat

但您已表示过您不想这么做。

2) 唯一的其他选择是修改 fix.bat 以将当前目录更改为执行的位置。最简单的方法是在脚本顶部(或附近)添加以下行:

pushd "%~f0"

但这可能会改变其他用户的行为,他们希望脚本在调用时从当前目录运行。

编辑或者采纳 AFH 的其他建议 :-)

相关内容