首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在批处理文件中包含批处理文件

在批处理文件中包含批处理文件
EN

Stack Overflow用户
提问于 2010-09-29 19:12:57
回答 5查看 2K关注 0票数 5

在尝试使用Process.Start运行所有内容时,从另一个批处理文件调用批处理文件时出现问题。基本上,我从我的c#程序中调用批处理文件的执行,如下所示:

代码语言:javascript
复制
call include.bat  

//execute the rest of the batch file here  

include.bat文件设置路径,并可由许多其他批处理文件使用。当我运行Process.Start时,它有时会起作用,有时我会得到ERROR: cannot find include.bat。首先,你知道为什么会发生这种情况吗?以及如何从批处理文件修复此问题的想法?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-09-29 19:20:46

要切换到批处理文件所在的目录,请使用以下命令:

代码语言:javascript
复制
cd %~dp0

我在几乎所有的批处理脚本中都是这样做的。这样的话,相对路径应该总是有效的。

票数 6
EN

Stack Overflow用户

发布于 2012-06-11 00:00:56

在编写脚本之前,先尝试CD /D %~dp0

票数 2
EN

Stack Overflow用户

发布于 2012-09-27 11:27:14

我知道这是一个古老的问题,但我认为值得注意的是,公认答案所提倡的方法(即更改工作目录)可能并不总是合适的。

一种更好的常规方法是通过完整路径引用依赖项:

代码语言:javascript
复制
call "%~dp0include.bat"

(因为%~dp0已经以反斜杠结尾,所以我们不需要再添加一个。)

以下是而不是更改工作目录的一些好处:

即使在没有"SETLOCAL".

  • If的情况下,第一个批处理文件通过路径(如“
  1. ”)运行,当执行changing the directory (even with "cd /d") will fail时,全路径调用将成功。(使用pushd/popd可以解决这一点,但它们有自己的一组问题。)

这些好处对于别名类型的批处理文件尤其重要,即使它们对于激发这个问题的特定情况并不那么重要。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3821050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档