我是一名生物信息学人员,我使用C#进行工作。我一直在使用C#中的进程来运行可执行程序几次。这次我有一个新问题。我在Windows下载了一个名为Blast的程序的exe文件(http://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Web&PAGE_TYPE=BlastDocs&DOC_TYPE=Download)。如果我输入的命令是:使用C#进程运行可执行程序
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();
}
你有什么想法我可以解决这个问题吗?
在此先感谢。
如果您已经从记事本中复制并粘贴了您的参数,那么他们可能已经保留了编码。使用notepade保存带有ansi编码的文本文件,然后复制这些参数。 – Kell
你确定你应该把“blastp”作为参数中的第一个单词吗?那不是exe名字?该过程现在将调用此命令:C:\ Program Files \ NCBI \ blast-2.2.25 + \ bin \ blastp.exe blastp -query input.txt -db pdbaa -out output.txt –