繁体   English   中英

c#中的cmd命令

[英]cmd command in c#

我想在C#中使用mongoimport将csv文件导入mongodb。 所以我实现了这个方法

public bool importCSV(string filepath, string db, string collectionName){

        string result="";
        try
        {
            ProcessStartInfo procStart = new ProcessStartInfo("cmd", "C:/MongoDB/Server/3.0/bin/mongoimport -d " + db + " -c " + collectionName + " --type csv --file " + filepath );
            procStart.RedirectStandardOutput = true;
            procStart.CreateNoWindow = false;
            Process proc = new Process();
            proc.StartInfo = procStart;
            proc.Start();

            result += proc.StandardOutput.ReadToEnd();
        }
        catch(Exception e){
            Console.WriteLine(e.ToString());
        }
        if (!result.Equals("")){
            return true;
        }
        return false;
    }

当我自己运行命令时,我可以将文件导入MongoDB。 但是通过使用C#,方法返回false。

任何人都可以帮我解决这个问题吗?

解!!!

public bool importCsv(string filepath,  string collectionName){

        string result ="";
        try
        {
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.FileName = @"C:/MongoDB/Server/3.0/bin/mongoimport.exe";
            startInfo.Arguments = @" -d test -c " + collectionName + " --type csv --file " + filepath + " --headerline";
            Process proc = new Process();
            proc.StartInfo = startInfo;
            proc.Start();
            result += "ddd";
        }
        catch(Exception e)
        {
            Console.WriteLine(e.ToString());
        }

        if (!result.Equals(""))
        {
            return true;
        }
        return false;
    }

尝试这样的事情:

    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.OutputDataReceived += new DataReceivedEventHandler((sender, e) =>
    {
        if (!String.IsNullOrEmpty(e.Data))
        {
            result+=e.Data;
        }
    });

    process.Start();

    // Asynchronously read the standard output of the spawned process.  
    // This raises OutputDataReceived events for each line of output.
    process.BeginOutputReadLine();
    process.WaitForExit();
    process.Close();

暂无
暂无

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

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