Как правильно запускать bat-файлы - C#
Формулировка задачи:
Не пойму почему почему после процесса запускающий .bat файл не образуется файл .exe где у меня здесь ошибка
Однако когда использую код в отдельном консольном приложении файл .exe образуется и все работает
при клике мышью на .bat файл .exe файл образуется
а здесь не хочет зараннеее спасибо
Process process = new Process();
process.StartInfo.FileName = @"C:\new\61\61.bat";
process.Start(); private void button4_Click(object sender, EventArgs e)
{
// string fullFileName = @"F:\prin_fil\таймер.docx";
DirectoryInfo dir = new DirectoryInfo(@"C:\prin_fil");
FileInfo[] bmpfiles = dir.GetFiles("*.cs");
Console.WriteLine("Total number of bmp files", bmpfiles.Length);
foreach( FileInfo f in bmpfiles)
{
MessageBox.Show("Name is : {0} " + f.Name);
MessageBox.Show("Length of the file is : {0} " + f.Length.ToString());
MessageBox.Show("Creation time is : {0} " + f.CreationTime.ToString());
MessageBox.Show("Creation time is : {0} " + f.FullName.ToString());
MessageBox.Show("Creation time is : {0} " + f.Extension.ToString());
MessageBox.Show("Attributes of the file are : {0} " +
f.Attributes.ToString());
for (int i = 0; i < AlShow.Count; i++)
{
if ( this.grd_Show.Rows[i].Cells[0].Value.ToString() + f.Extension.ToString() == f.Name.ToString())
{
//время прихода копии
DateTime dt = DateTime.Now;
int sec = dt.Second;
int min = dt.Minute;
int hour = dt.Hour;
string jj = "_";
jj += hour.ToString() + "_" + min.ToString() + "_" + sec.ToString();
string put = @"cd C:\new\" + this.grd_Show.Rows[i].Cells[0].Value.ToString() + " \r\ncsc /t:exe " + f.Name.ToString();
//делаем копию
f.CopyTo(@"C:\new\" + this.grd_Show.Rows[i].Cells[0].Value.ToString() + "\\" + this.grd_Show.Rows[i].Cells[0].Value.ToString() + "\\" + jj + "__" + f.Name.ToString(), true);
//Есть ли уже файл в папке
if (File.Exists(@"C:\new\" + this.grd_Show.Rows[i].Cells[0].Value.ToString() + "\\" + f.Name.ToString()) == true)
{
//стираем файл
DirectoryInfo dir3 = new DirectoryInfo(@"C:\new\61");
FileInfo[] bmpfiles3 = dir3.GetFiles("*.cs");
foreach (FileInfo f3 in bmpfiles3)
{
f3.Delete();
}
FileInfo[] bmpfiles4 = dir3.GetFiles("*.bat");
foreach (FileInfo f4 in bmpfiles3)
{
f4.Delete();
}
//переносим файл
f.MoveTo(@"C:\new\" + this.grd_Show.Rows[i].Cells[0].Value.ToString() + "\\" + f.Name.ToString());
// dir3.Create(this.grd_Show.Rows[i].Cells[0].Value.ToString() + ".bmp");
//создать (если нет) либо открыть если есть и записать текст (путем замены если что то было записано)
//cd C:\new\ + this.grd_Show.Rows[i].Cells[0].Value.ToString() + "csc /t:exe" + f.Name.ToString();
System.IO.File.WriteAllText(@"C:\new\" + this.grd_Show.Rows[i].Cells[0].Value.ToString() + "\\" + this.grd_Show.Rows[i].Cells[0].Value.ToString() + ".bat", put);
Thread.Sleep(300);
MessageBox.Show("Пошло");
Process process = new Process();
process.StartInfo.FileName = @"C:\new\61\61.bat";
//подписываемся на событие завершения процесса
//process.Exited += process_Exited;
//асинхронная операция, не блокирует поток, из которого была вызвана
process.Start();
// Pros_();
}
else
{
//переносим файл
f.MoveTo(@"C:\new\" + this.grd_Show.Rows[i].Cells[0].Value.ToString() + "\\" + f.Name.ToString());
//создаем файл .bat
System.IO.File.WriteAllText(@"C:\new\" + this.grd_Show.Rows[i].Cells[0].Value.ToString() + "\\" + this.grd_Show.Rows[i].Cells[0].Value.ToString() + ".bat", put);
Thread.Sleep(300);
MessageBox.Show("Пошло");
Process process = new Process();
process.StartInfo.FileName = @"C:\new\61\61.bat";
//подписываемся на событие завершения процесса
//process.Exited += process_Exited;
//асинхронная операция, не блокирует поток, из которого была вызвана
process.Start();
// Pros_();
// dir2.CreateSubdirectory(this.grd_Show.Rows[i].Cells[0].Value.ToString());
}
}
}
}
}
this.grd_Show.Rows[i].Cells[0].Value.ToString() - это номер файла или папки
который бередся из поля dataGridView
Ясно процесс где то блокируется самой программой но где вот вопросс
Программа большая
Решение задачи: «Как правильно запускать bat-файлы»
textual
Листинг программы
P.StartInfo.WorkingDirectory = папка, где лежит батник