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

SilverSun

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

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

LexxWork

Client
Joined
Oct 31, 2013
Messages
1,190
Reaction score
792
Points
113
  • Thank you
Reactions: SilverSun

SilverSun

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

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

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

LexxWork

Client
Joined
Oct 31, 2013
Messages
1,190
Reaction score
792
Points
113
  • Thank you
Reactions: SilverSun

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
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
Joined
Oct 31, 2013
Messages
1,190
Reaction score
792
Points
113
наверно проще будет запускать сам батник
FileName = "cmd.exe",
WorkingDirectory = project.Directory+@"E:\BitTorrent\",
Arguments = "/c "+project.Variables["путь к файлу bat"].Value
}
};
 
  • Thank you
Reactions: SilverSun

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
18
наверно проще будет запускать сам батник
FileName = "cmd.exe",
WorkingDirectory = project.Directory+@"E:\BitTorrent\",
Arguments = "/c "+project.Variables["путь к файлу bat"].Value
}
};
Прописал так как вы сказали, только путь к файлу cmd.exe указал полный. Безрезультатно.

 

LexxWork

Client
Joined
Oct 31, 2013
Messages
1,190
Reaction score
792
Points
113
нужно так как я написал
FileName = "cmd.exe",
в тестере не запускайте
 
  • Thank you
Reactions: SilverSun

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
18
нужно так как я написал
FileName = "cmd.exe",
в тестере не запускайте
На этот раз ошибок меньше. Мне кажется что решение уже где то рядом.
Я запускаю код в PM.
Вот что у меня получилось:

 
Last edited:

LexxWork

Client
Joined
Oct 31, 2013
Messages
1,190
Reaction score
792
Points
113
да уж...
вроде бы ошибок быть не должно
WorkingDirectory = project.Directory+@"E:\BitTorrent\",
заменить на
WorkingDirectory = @"E:\BitTorrent",
 
  • Thank you
Reactions: SilverSun

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
18
да уж...
вроде бы ошибок быть не должно
WorkingDirectory = project.Directory+@"E:\BitTorrent\",
заменить на
WorkingDirectory = @"E:\BitTorrent",
Теперь получилось вот такое:
Пробовал в конце и со слешем и без.
 

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
18
Такс, перезагрузил PM. Экшен вроде запустился, но завис и висит без признаков жизни.
 

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
18
В общем, так и не получилось у меня запустить этот экшен, завис и висит причем, для того что бы его остановить надо закрыть PM. Что делать прям не знаю. Может еще есть какие то варианты решения этой проблемы?
 

LexxWork

Client
Joined
Oct 31, 2013
Messages
1,190
Reaction score
792
Points
113
Code:
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;
сам батник

Code:
for /d %%X in (%1\*) do %2 a "%%X.zip" -p%3 "%%X\"
 
  • Thank you
Reactions: SilverSun

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
18
Благодарю вас за то, что помогаете мне!
Все сделал так, как вы сказали. Экшен выполнил проект успешно. Но я не нахожу выполненного архива. Ищу через поиск — тоже не нахожу.
 

LexxWork

Client
Joined
Oct 31, 2013
Messages
1,190
Reaction score
792
Points
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
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
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
Попробовал запустить батник вручную — он не работает.
 
Last edited:

LexxWork

Client
Joined
Oct 31, 2013
Messages
1,190
Reaction score
792
Points
113
не архив, а архивы каждой папки. Если папок нет, то архивов тоже нет.
string projects_path = @"Е:\BitTorrent"; //<-правильный путь
 

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
18
И так тоже пробовал. Все равно не работает. Вернее работает но не сохраняет архивы.
Может у меня с системой что то не так? Может из-за того что на виртуалке?
 

LexxWork

Client
Joined
Oct 31, 2013
Messages
1,190
Reaction score
792
Points
113
попробуйте запустить просто сам батник с параметрами
"Е:\BitTorrent" "C:\Program Files (x86)\7-Zip\7z.exe" 12345
 

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
18
Мигнуло окно командной строки. Проект выполнен успешно, но архивов все равно нет.
 

LexxWork

Client
Joined
Oct 31, 2013
Messages
1,190
Reaction score
792
Points
113
не в проекте а в досе
и чтобы и мне тоже было видно что оно там мигнуло
наверняка там выдается информация почему не создаются архивы
 
  • Thank you
Reactions: SilverSun

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
18
не в проекте а в досе
и чтобы и мне тоже было видно что оно там мигнуло
наверняка там выдается информация почему не создаются архивы
А вы смогли бы глянуть через тим вивер?
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)