Я не уверен, есть ли способ открыть одно командное окно и затем продолжать публиковать в нем свои команды, было бы неплохо, если бы у кого-то был умный способ сделать это.
Вы можете использовать Streamwriter, чтобы написать командный файл со всеми нужными вам командами, а затем запустить командный файл. Это, по крайней мере, откроет только один процесс.
StreamWriter sw = new StreamWriter("MyBatchFile.bat");
string command = @"bcp ADatabase.dbo.{0} out {0}.bcp -n -Usa -%1";
ProcessStartInfo processInfo = null;
try
{
foreach (string table in tables)
{
command = string.Format(command, table);
sw.WriteLine(command);
}
sw.Flush();
sw.Close();
processInfo = new ProcessStartInfo("cmd", "/c MyBatchFile.Bat Ppassword");
processInfo.RedirectStandardOutput = true;
processInfo.CreateNoWindow = false;
Process process = new Process();
process.StartInfo = processInfo;
process.Start();
string result = process.StandardOutput.ReadToEnd();
Console.WriteLine(result);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Пакетный файл имеет "% 1" в командной строке, поэтому при запуске процесса вы передаете пароль для базы данных в пакетный файл
ProcessStartInfo("cmd", "/c MyBatchFile.Bat Ppassword");
Это должно гарантировать, что если кто-нибудь когда-нибудь найдет пакетный файл, он просто будет иметь% 1, где будет пароль.
Не уверен, что это лучше, чем у вас уже есть ... но он открывает только одно командное окно:)
Martyn