Как заархивировать папку?

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
В общем приключилась со мной беда: работаю я на виртуалке и периодически откатываю систему. Ну вот и вчера откатил систему и все наработки и шаблоны естественно откатились тоже — забыл перед этим сохранить папку с шаблонами. Короче все пропало и я маленько в шоке :-) Теперь вот мне в голову пришла мысль, что надо бэкапить все данные с ежедневной периодичностью. Решил сделать шаблон который будет архивировать папку с шаблонами и заливать на облако и на другой жесткий диск.
Подскажите, пожалуйста, как заставить папку архивироваться из под зенки, да еще так чтобы архив был с паролем? Нашел тут тему по поиску http://zennolab.com/discussion/threads/zaarxivirovat-papku.10100 но честно говоря, не знаю как разобраться с кодом что бы он правильно работал.

Может кто то из бывалых поделится опытом как правильно организовывать работу с зенопостером, а то со временем (как я уже понял) копится много разной информации, а как ее правильно структурировать и разложить по полочкам пока не понятно.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
  • Спасибо
Реакции: SilverSun

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
я думаю те лучше делать так
http://ru.wikihow.com/с-помощью-7zip-сжать-несколько-папок
для пароля добавь -p{password}
выполняешь пакетник и кидаешь все на облако.
Благодарю за подсказку.
Создал батник, запустил — все работает, т.е. архив создается в той папке в которой находится батник. Но вот когда за пускаю в PM, то архивируются все папки самого PM ( по пути C:\Program Files\ZennoLab\ZennoPoster Standard\Progs)

Запуск батника делаю с помощью вот этого скрипта:

Код:
var path = project.Variables["путь к файлу bat"].Value;
var process = System.Diagnostics.Process.Start(path);
// возвращаем Id запущенного процесса
return process.Id;
Что я делаю не так?
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
  • Спасибо
Реакции: SilverSun

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
Сделайте так.
http://zennolab.com/discussion/threads/zapusk-exe-s-parametrami-i-ozhidaniem-zavershenija-raboty.16180/#post-99672
в FileName = @"путь к вашему 7зипу"
в Arguments можно сразу все что в бате написать одной строчкой
WorkingDirectory - на всякий случай укажите папку с вашими проектами которые собираетесь заархивировать
Делаю так:

var process = new System.Diagnostics.Process {
StartInfo = new System.Diagnostics.ProcessStartInfo {
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
CreateNoWindow = true,
FileName = "C:\Program Files (x86)\7-Zip\7z.exe",
WorkingDirectory = project.Directory+"E:\BitTorrent\",
Arguments = "for /d %%X in (*) do "C:\Program Files (x86)\7-Zip\7z.exe" a "%%X.7z" "%%X\" -p{password}" // аргументы
}
};
process.Start();
process.WaitForExit();
string output = process.StandardOutput.ReadToEnd();
process.Close();

Получаю вот такие ошибки в логе

Где я накаосячил?
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
наверно проще будет запускать сам батник
FileName = "cmd.exe",
WorkingDirectory = project.Directory+@"E:\BitTorrent\",
Arguments = "/c "+project.Variables["путь к файлу bat"].Value
}
};
 
  • Спасибо
Реакции: SilverSun

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
наверно проще будет запускать сам батник
FileName = "cmd.exe",
WorkingDirectory = project.Directory+@"E:\BitTorrent\",
Arguments = "/c "+project.Variables["путь к файлу bat"].Value
}
};
Прописал так как вы сказали, только путь к файлу cmd.exe указал полный. Безрезультатно.

 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
нужно так как я написал
FileName = "cmd.exe",
в тестере не запускайте
 
  • Спасибо
Реакции: SilverSun

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
нужно так как я написал
FileName = "cmd.exe",
в тестере не запускайте
На этот раз ошибок меньше. Мне кажется что решение уже где то рядом.
Я запускаю код в PM.
Вот что у меня получилось:

 
Последнее редактирование:

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
да уж...
вроде бы ошибок быть не должно
WorkingDirectory = project.Directory+@"E:\BitTorrent\",
заменить на
WorkingDirectory = @"E:\BitTorrent",
 
  • Спасибо
Реакции: SilverSun

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
да уж...
вроде бы ошибок быть не должно
WorkingDirectory = project.Directory+@"E:\BitTorrent\",
заменить на
WorkingDirectory = @"E:\BitTorrent",
Теперь получилось вот такое:
Пробовал в конце и со слешем и без.
 

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
Такс, перезагрузил PM. Экшен вроде запустился, но завис и висит без признаков жизни.
 

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
В общем, так и не получилось у меня запустить этот экшен, завис и висит причем, для того что бы его остановить надо закрыть PM. Что делать прям не знаю. Может еще есть какие то варианты решения этой проблемы?
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
Код:
string status = "ok";
string bat_path = project.Directory+"\\arc.bat"; //путь к батнику
string projects_path = @"D:\Zen\Projects\test\projects"; \\путь к папке с проектами
string sevenzip_path = @"c:\Program Files\7-Zip\7z.exe"; \\путь к 7zip
string password = "password"; \\пароль

System.Diagnostics.Process process = null;
try{
        process = new System.Diagnostics.Process { StartInfo = new System.Diagnostics.ProcessStartInfo {
            UseShellExecute = false, RedirectStandardOutput = true,    RedirectStandardError = true, RedirectStandardInput = true, CreateNoWindow = true,   
            FileName = @"cmd.exe",
            Arguments = "/c "+bat_path+" \""+projects_path+"\" \""+sevenzip_path+"\" "+password
        } };

    process.Start();
    process.WaitForExit();
}catch(Exception e){ status = e.Message;}
finally{
    process.Close();
    process.Dispose();
}

return status;
сам батник

Код:
for /d %%X in (%1\*) do %2 a "%%X.zip" -p%3 "%%X\"
 
  • Спасибо
Реакции: SilverSun

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
Благодарю вас за то, что помогаете мне!
Все сделал так, как вы сказали. Экшен выполнил проект успешно. Но я не нахожу выполненного архива. Ищу через поиск — тоже не нахожу.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
string bat_path = project.Directory+"\\arc.bat"; //путь к батнику
string projects_path = @"D:\Zen\Projects\test\projects"; //путь к папке с проектами
string sevenzip_path = @"c:\Program Files\7-Zip\7z.exe"; //путь к 7zip
string password = "password"; //пароль
нужно было лишь поменять это
у меня все работает.
 

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
string bat_path = project.Directory+"\\arc.bat"; //путь к батнику
string projects_path = @"D:\Zen\Projects\test\projects"; //путь к папке с проектами
string sevenzip_path = @"c:\Program Files\7-Zip\7z.exe"; //путь к 7zip
string password = "password"; //пароль
нужно было лишь поменять это
у меня все работает.
Еще раз перепроверил. Вот скрин:

А куда должен сохранятся готовый архив?

PS
Попробовал запустить батник вручную — он не работает.
 
Последнее редактирование:

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
не архив, а архивы каждой папки. Если папок нет, то архивов тоже нет.
string projects_path = @"Е:\BitTorrent"; //<-правильный путь
 

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
И так тоже пробовал. Все равно не работает. Вернее работает но не сохраняет архивы.
Может у меня с системой что то не так? Может из-за того что на виртуалке?
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
попробуйте запустить просто сам батник с параметрами
"Е:\BitTorrent" "C:\Program Files (x86)\7-Zip\7z.exe" 12345
 

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
Мигнуло окно командной строки. Проект выполнен успешно, но архивов все равно нет.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
не в проекте а в досе
и чтобы и мне тоже было видно что оно там мигнуло
наверняка там выдается информация почему не создаются архивы
 
  • Спасибо
Реакции: SilverSun

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
не в проекте а в досе
и чтобы и мне тоже было видно что оно там мигнуло
наверняка там выдается информация почему не создаются архивы
А вы смогли бы глянуть через тим вивер?
 

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)