使用UWP C#运行bat文件

时间:2017-11-19 07:57:59

标签: c# uwp executable launcher

我正在尝试构建UWP应用,我正在努力解决一个问题: 我注意到现在有了启动外部可执行文件的方法,但我可以使用LaunchFile打开文件及其默认应用程序(如此处所提到的https://docs.microsoft.com/en-us/uwp/api/Windows.System.Launcher#Windows_System_Launcher_LaunchFileAsync_Windows_Storage_IStorageFile_)。

它是否也适用于.bat文件?我应该在哪里放置.bat文件。因为我试图给出一个我写的.bat文件的路径,我得到了一个例外。

谢谢!

2 个答案:

答案 0 :(得分:2)

它不会起作用。如果你可以在默认情况下获得一些第三方应用程序来打开并处理bat文件,那么可能会运行像cmd或vbscript这样的操作系统。不确定你的目标是什么,但像Autohotkey这样的第三方脚本应用确实有用。

答案 1 :(得分:-1)

  

从.NET 4开始,有ProcessProcessStartInfo   允许您使用System.Diagnostics命名空间下的类   从C#到Win32应用程序。

public static Task<bool> ExecuteBatchFile(string BatchFilePath, string BatchFileDirectory)
        {
            try
            {
                Task<bool> executeBatchFileTask = Task.Run<bool>(() =>
                {
                    bool hasProcessExited = false;
                    ProcessStartInfo startInfo = new ProcessStartInfo()
                    {
                        FileName = BatchFilePath,
                        CreateNoWindow = false,
                        UseShellExecute = true,
                        WindowStyle = ProcessWindowStyle.Normal,
                        WorkingDirectory = BatchFileDirectory
                    };

                    // Start the process with the info we specified.
                    // Call WaitForExit and then the using-statement will close.
                    using (System.Diagnostics.Process exeProcess = System.Diagnostics.Process.Start(startInfo))
                    {
                        while (!exeProcess.HasExited)
                        {
                            //Do nothing  
                        }
                        hasProcessExited = true;
                    }

                    return hasProcessExited;
                });
                return executeBatchFileTask;
            }
            catch (Exception ex)
            {
                throw;
            }
        }

在代码中调用此方法:

bool hasBatchFileExecuted = await ExecuteBatchFile(BatchFilePath, BatchFilePathDirectory);

创建您自己的批处理文件,如:

1)在记事本中创建一个文本文件,并将其保存为run.bat,保存为类别和所有文件。

2)编写以下代码以执行C#程序/但是您也可以编写自己的命令:

csc someRandomCode.cs
pause

3)保存并退出。