[英]Include a batch file in a batch file
尝试使用Process.Start
运行所有内容时,从另一个批处理文件调用批处理文件时出现问题。 基本上我调用从我的c#程序执行批处理文件,如下所示:
call include.bat
//execute the rest of the batch file here
include.bat文件设置路径,可以由许多其他批处理文件使用。 当我运行Process.Start
有时这会工作,有时我会得到ERROR: cannot find include.bat
。 首先,任何想法为什么会发生这种情况? 关于如何从批处理文件中解决这个问题的想法?
要切换到批处理文件所在的目录,请使用以下命令:
cd %~dp0
我几乎在所有批处理脚本中都这样做。 这样,相对路径应始终有效。
在脚本之前,尝试CD /D %~dp0
我知道这是一个老问题,但我认为值得注意的是,接受的答案(即更改工作目录)所推广的方法可能并不总是合适的。
更好的通用方法是通过完整路径引用依赖关系:
call "%~dp0include.bat"
(由于%~dp0已经以反斜杠结尾,因此我们不需要添加另一个。)
以下是不更改工作目录的一些好处:
这些好处对于别名类型批处理文件尤为重要,即使它们对于激发此问题的特定情况并不重要。
我要尝试的第一件事是在include.bat的调用语句中使用完整路径信息。 如果修复它,您可能只是没有从正确的位置运行批处理文件。 我确信在C#中有一个“工作目录”功能,我只是不确定它是什么。
您是否在传递给Process.Start的ProcessStartInfo上设置了ProcessStartInfo.WorkingDirectory( http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.workingdirectory.aspx )?
由于有时无法找到include.bat,因此工作目录可能不正确(不是include.bat所在的文件夹)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.