我需要在 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
有多种选择:-
- 使用资源管理器创建链接:定位修复程序,右键单击,选择复制,右键单击其他地方并选择粘贴快捷方式;现在重命名以从名称中删除“快捷方式”以及“.bat”:然后将父命令更改为调用目录:\dev\sys\fix.lnk代替目录:\dev\sys\fix.bat并且链接将设置目录。
- 创建一个三行文件调用修复程序包含
d:
,cd \dev\sys
和fix.bat
:然后调用它而不是修复程序在你的父母命令中。 - 在您的父命令中使用
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 的其他建议 :-)