繁体   English   中英

Visual Studio 2017 中的 .bat 文件

[英].bat file in Visual Studio 2017

我正在尝试在我的应用程序中运行 .bat 文件。 此 .bat 调用 JTAG 应用程序以在微控制器中加载固件。 但是,我不知道为什么这无法执行软件。 如果我在 Visual Studio 之外运行 .bat,它可以完美运行。

我有 GUI 和一个按钮,我将点击它来执行固件加载

为了生成命令文件,我使用了软件 Uniflash。 该软件生成一个文件夹,其中包含执行 JTAG 访问和加载固件所需的所有文件。

我的代码如下:

    private void Button_Relay_Click(object sender, EventArgs e)
    {
        Process MSP = new Process();
        MSP.StartInfo.WorkingDirectory = @"D:\\Projects\\Test_Fixture\\Test_Fixture_Visual_Studio\uniflash_windows_64";
        MSP.StartInfo.FileName = "dslite.bat ";
        MSP.Start();
        Thread.Sleep(500);
        MSP.WaitForExit();

    }

但是,当我执行此代码时,编译没问题,但是当我运行此代码时出现此错误:

在此处输入图片说明

问题:

  1. 我总是会为每个应用程序生成特定的 bat 文件,并将 .bat 文件夹包含在 VS C# 的文件夹中,我如何设置目录路径以在我的软件文件夹中自动检查?

  2. 如果路径正确,为什么VS找不到文件?

在此处输入图片说明

  1. 在我的 .bat 运行之后,我想阅读编程的状态(成功或失败)我怎么做? 成功

在此处输入图片说明

失败: 在此处输入图片说明

广告 2)

关于错误:

那是因为您可能指定了错误的路径:

代替

MSP.StartInfo.WorkingDirectory = @"D:\\Projects\\Test_Fixture\\Test_Fixture_Visual_Studio\uniflash_windows_64";

要么在任何地方使用\\\\ (在Test_Fixture_Visual_Studiouniflash_windows_64之间只有一个\\ )并跳过@使用@并只使用一个\\而不是两个。 所以用这个替换你的行:

MSP.StartInfo.WorkingDirectory = @"D:\Projects\Test_Fixture\Test_Fixture_Visual_Studio\uniflash_windows_64";



广告 3)

关于你的过程的结果:

在我看来,不调用批处理文件而是直接调用进程本身更容易。 通过这种方式,您可以检索Process.ExitCode属性以检索可执行文件的退出代码(如果它通过退出代码返回其状态)。 您可以通过在命令外壳中调用可执行文件来检查这一点,并通过调用检查上次执行的错误级别

echo %ERRORLEVEL%

通常0表示成功,其他一切都表示某种失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM