【发布时间】:2011-11-11 13:08:44
【问题描述】:
我是一名生物信息学家,我在工作中使用 C#。我已经多次使用 C# 中的进程来运行可执行程序。这次我有一个新问题。我在 Windows 中为名为 Blast(http://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Web&PAGE_TYPE=BlastDocs&DOC_TYPE=Download) 的程序下载了一个 exe 文件。如果我输入我的命令:
blastp -query input.txt -db pdbaa -out output.txt
它工作正常。但是当我从记事本复制粘贴命令时,它会出错。我搜索了这个问题,发现它是由复制和粘贴引起的“UTF-8 与 ISO-latin 的编码问题”(http://biostar.stackexchange.com/questions/7997/an-error-by-using-ncbi-blast-2-2-25-on-windows)。
现在我想从 c# 运行进程来调用 exe 文件,我遇到了同样的问题,我猜这是因为该进程执行了复制和粘贴之类的操作。这是我的代码:
public void Calculate()
{
Process proc = new Process();
proc.StartInfo.WorkingDirectory = Program.NCBIBlastDirectory;
proc.StartInfo.FileName = @"C:\Program Files\NCBI\blast-2.2.25+\bin\blastp.exe";
proc.StartInfo.Arguments = "blastp -query input.txt -db pdbaa -out output.txt";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardError = true;
proc.Start();
proc.WaitForExit();
proc.Close();
}
你知道我该如何解决这个问题吗?
提前致谢。
【问题讨论】:
-
如果您也从记事本复制并粘贴了您的参数,那么它们可能保留了编码。在记事本中保存带有 ansi 编码的文本文件,然后复制这些参数。
-
您确定应该将“blastp”作为参数中的第一个单词吗?这不是exe名称吗?该进程现在将调用此命令:C:\Program Files\NCBI\blast-2.2.25+\bin\blastp.exe blastp -query input.txt -db pdbaa -out output.txt
标签: c# process executable