我是一名生物信息學人員,我使用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 –