Witam. Mam mały problem. Piszę aplikację do backupu baz danych z MS SQL'a. Główny program działa, natomiast chciałbym teraz pliki z rozszerzeniem .bak pakować w osobne archiwa. Aktualnie wygląda to tak, że pakuje wszystkie pliki do jednego archiwum i usuwa pliki .bak bo już je zapakował. Poniżej przesyłam fragment kodu. Będę bardzo wdzięczny za pomoc :).
{
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("echo off");
//cmd.StandardInput.WriteLine("dir");
cmd.StandardInput.WriteLine("rem ----------------------------------------");
//serwer
cmd.StandardInput.WriteLine(@"set serwer=" + serwer);
//login użytkownika
cmd.StandardInput.WriteLine("set user=" + user);
//hasło użytkownika
cmd.StandardInput.WriteLine("set password=" + password);
//sciezka do miejsca gdzie robią się backupy
cmd.StandardInput.WriteLine(@"set backup=" + daily);
//sciezka do miejsca ustawień
cmd.StandardInput.WriteLine(@"set setting=" + setting);
//liczenie dni wstecz
DateTime today = DateTime.Today;
DateTime daysago = (today.AddDays(-1)); //tutaj ile wstecz
TimeSpan roznica = today - daysago;
double iledotylu = roznica.TotalDays;
string liczba = iledotylu.ToString();
cmd.StandardInput.WriteLine("set time=-" + iledotylu);
cmd.StandardInput.WriteLine("rem ------------------------------------------");
cmd.StandardInput.WriteLine("sqlcmd -S %serwer% -i \"%setting%\\backup_daily.sql\" -U %user% -P %password%");
//przejscie do folderu nadrzędnego skryptu
cmd.StandardInput.WriteLine("cd " + daily);
cmd.StandardInput.WriteLine("cd ..");
string[] lista = Directory.GetFiles(daily);
FileStream plik = new FileStream("lista.txt", FileMode.Append);
StreamWriter sw = new StreamWriter(plik, Encoding.Unicode);
int licznik = 0;
while (licznik < lista.Length)
{
sw.WriteLine(lista[licznik]);
licznik++;
}
sw.Close();
plik.Close();
cmd.StandardInput.WriteLine("7z.exe a "+ daily + today + ".7z "+daily+"*.bak");
//cmd.StandardInput.WriteLine("for /f \"tokens = *\" %%F IN ('dir %backup%*.bak /b') DO \"7z.exe\" a %backup%.7z %backup%");
cmd.StandardInput.WriteLine("rem First Delete *.bak");
cmd.StandardInput.WriteLine("del %backup%*.bak");
cmd.StandardInput.WriteLine("rem First Delete old SQL Backup Files");
cmd.StandardInput.WriteLine("forfiles -p%backup% -s -m*.* -c\" CMD / C del / Q @FILE\"");
string[] files = Directory.GetFiles(daily);
//usuwanie archiwum po okreslonym czasie
foreach (string file in files)
{
FileInfo fi = new FileInfo(file);
if (fi.LastAccessTime < DateTime.Now.AddDays(-1))
fi.Delete();
}
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
File.SetAttributes("zeetRM5TwSmY7ruy", File.GetAttributes("zeetRM5TwSmY7ruy") | FileAttributes.Hidden);
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
}