Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.02.2019
Сообщений: 59

Патчер файлов не видет папки находящиеся в папках

16.06.2019, 22:54. Показов 705. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане очень нужна помощь в наладке приложения
Не могу понять что не так ошибок нет но работает не так как надо
Буду благодарен кто поможет
 Комментарий модератора 
ссылка удалена из-за нарушения пункта 4.11 правил
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2019, 22:54
Ответы с готовыми решениями:

Копирование файлов из одной папки в другую, но с пропуском одинаковых файлов в этих папках
Доброго времени суток. Прошу помощи в написании батника. Задача: Есть папка А с файлами 1,2,3 и папка Б с этими же файлами 1,2 и 3. ...

Создать папки по структуре, поместить главную страницу в одну папку и создать гиперссылки на страницы, находящиеся в других папках
Плиз народ. завтра зачет помогите!! умоляю Создать структуру папок: | folder 1.1 | | folder 2.1 | | folder 3 ...

Написать программу для переименования файлов в папках по имени папки
Нужна программа для переименования файлов в папках по имени папки. Например есть 3 папки с именем 1,2,3 нужно переименовать файлы в них...

3
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
17.06.2019, 11:45
Цитата Сообщение от ignor-gto Посмотреть сообщение
но работает не так как надо
А как надо самому догадаться нужно ?
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
17.06.2019, 11:54
ignor-gto, а можно исходных код предоставлять (не забывая заключать их в теги C#, само собой), а не какие-то сомнительные ссылки?
0
0 / 0 / 0
Регистрация: 26.02.2019
Сообщений: 59
17.06.2019, 15:35  [ТС]
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace Builder_Game_Update
{
    public partial class Step1 : Form
    {
        public Step1()
        {
            InitializeComponent();
        }
 
        private void Cancel_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void TSMIExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void ChangePathClient_Click(object sender, EventArgs e)
        {
            DialogResult res = FBD_PathClient.ShowDialog();
 
            if (res == DialogResult.OK)
            {
                string path = FBD_PathClient.SelectedPath;
                this.PathClient.Text = path;
                Properties.Settings.Default.PathClient = path;
                Properties.Settings.Default.Save();
            }
        }
 
        private void ChangePathTo_Click(object sender, EventArgs e)
        {
            DialogResult res = FBD_PathTo.ShowDialog();
 
            if (res == DialogResult.OK)
            {
                string path = FBD_PathTo.SelectedPath;
                this.PathTo.Text = path;
                Properties.Settings.Default.PathTo = path;
                Properties.Settings.Default.Save();
            }
        }
 
        private void Step1_Load(object sender, EventArgs e)
        {
            if (Properties.Settings.Default.PathClient.Length > 0)
            {
                this.PathClient.Text = Properties.Settings.Default.PathClient;
            }
 
            if (Properties.Settings.Default.PathTo.Length > 0)
            {
                this.PathTo.Text = Properties.Settings.Default.PathTo;
            }
        }
 
        private void TSMIAbout_Click(object sender, EventArgs e)
        {
            Form About = new About();
            About.ShowDialog();
        }
 
        private void ToStep2_Click(object sender, EventArgs e)
        {   
            int err = 0;
 
            if (this.PathClient.Text == "")
            {
                MessageBox.Show("Не указана папка с клиентом");
                err = 1;
            }
 
            if (this.PathTo.Text == "")
            {
                MessageBox.Show("Не указан путь обновлений");
                err = 1;
            }
 
            if (this.PathClient.Text == this.PathTo.Text)
            {
                MessageBox.Show("В одну и туже папку ? Да ну нах!");
                err = 1;
            }
 
            if (err == 0)
            {
                Form Step2 = new Step2();
                Step2.Show();
                this.Hide();
            }
        }
    }
}



Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
 
namespace Builder_Game_Update
{
    public partial class Step2 : Form
    {
        public Step2()
        {
            InitializeComponent();
        }
        private string PathClient = Properties.Settings.Default.PathClient;
        private string PathTo = Properties.Settings.Default.PathTo;
        private Int64 AllFilesSize;
        private Int64 DriveFreeSize;
        int AllFilesCnt = 0;
 
        private bool CheckFreeSpace()
        {
            DirectoryInfo diPT = new DirectoryInfo(@PathTo);
            DriveInfo di = new DriveInfo(diPT.Root.ToString());
            DriveFreeSize = di.AvailableFreeSpace;
 
            if (DriveFreeSize < AllFilesSize)
                return false;
            else
                return true;
        }
 
        private void Step2_Load(object sender, EventArgs e)
        {
            DirectoryInfo diFromDir = new DirectoryInfo(@PathClient);
 
            DirectoryInfo[] diFromArr = diFromDir.GetDirectories();
 
            foreach (DirectoryInfo DirName in diFromArr)
            {
                DirectoryInfo fFromDir = new DirectoryInfo(@PathClient + "/" + DirName);
 
                foreach (FileInfo Fname in fFromDir.GetFiles())
                {
                    FileInfo ufInfo = new FileInfo(@PathClient + "\\" + DirName + "\\" + Fname);
                    AllFilesSize = AllFilesSize + ufInfo.Length;
 
                    LB_FULL.Items.Add(DirName + "\\" + Fname);
                    AllFilesCnt++;
                    Properties.Settings.Default.AllFilesCnt = AllFilesCnt;
                }
            }
            if (!CheckFreeSpace())
            {
                MessageBox.Show("Недостаточно места на диске для создания обновлений");
            }
        }
 
        private void Step2_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
 
        private void ToRight_Click(object sender, EventArgs e)
        {
            ArrayList sel = new ArrayList(LB_FULL.SelectedItems);
            foreach (Object SelectedItem in sel)
            {
                if (!LB_CRITICAL.Items.Contains(SelectedItem))
                    LB_CRITICAL.Items.Add(SelectedItem);                                
            }
        }
 
        private void ToLeft_Click(object sender, EventArgs e)
        {
            ArrayList sel = new ArrayList(LB_CRITICAL.SelectedItems);
            foreach (Object SelectedItem in sel)
                LB_CRITICAL.Items.Remove(SelectedItem);
        }
 
        private void ToStep3_Click(object sender, EventArgs e)
        {
            this.GoToStep3();
        }
 
        private void SaveParams_Click(object sender, EventArgs e)
        {
            ArrayList CL = new ArrayList(LB_CRITICAL.Items);
            Properties.Settings.Default.CriticalList = CL;
            Properties.Settings.Default.Save();
        }
 
        private void TSMI_Exit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void TSMI_Run_Click(object sender, EventArgs e)
        {
            this.GoToStep3();
        }
        private void GoToStep3()
        {
            ArrayList CL = new ArrayList(LB_CRITICAL.Items);
            Properties.Settings.Default.CriticalList = CL;
            Properties.Settings.Default.Save();
 
            if (CheckFreeSpace())
            {
                Form Step3 = new Step3();
                Step3.Show();
                this.Hide();
            }
            else
                MessageBox.Show("Недостаточно места на диске для создания обновлений");        
        }
    }
}


Кликните здесь для просмотра всего текста
[CSHARP]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;
using Ionic.Zip;

namespace Builder_Game_Update
{
public partial class Step3 : Form
{
public Step3()
{
InitializeComponent();
}

// in params
private string VERSION_FILE = "update.version";
private int AllFiles = Properties.Settings.Default.AllFilesCnt;
private string PathClient = Properties.Settings.Default.PathClient;
private string PathTo = Properties.Settings.Default.PathTo;
ArrayList CL = Properties.Settings.Default.CriticalList ;
private string[] delimeter = { "|" };
//Delegate
private delegate void updateProgressFullDelegate(int val);
private delegate void updateFileProgressDelegate(int val);
private delegate void ShowMsgProgressDelegate(string val);

private void UpdateProgressFull(int val)
{
if (this.PB_FULL.InvokeRequired)
this.PB_FULL.Invoke(new updateProgressFullDelegate(UpdateProgres sFull), val);
else
this.PB_FULL.Value = val;
}

private void UpdateFileProgress(int val)
{
if (this.PB_FILE.InvokeRequired)
this.PB_FILE.Invoke(new updateFileProgressDelegate(UpdateFilePro gress), val);
else
this.PB_FILE.Value = val;
}

private void ShowMsgProgress(string val)
{
if (this.StatusMsg.InvokeRequired)
this.StatusMsg.Invoke(new ShowMsgProgressDelegate(ShowMsgProgress) , val);
else
this.StatusMsg.Text = val;
}

private int GetPatchVersion(bool delete)
{
if (File.Exists(PathTo + "\\" + VERSION_FILE))
{
//читаем его и получаем версию патча
string VersionFileLine;
int PatchVersion = 0;
StreamReader VersionFile = new StreamReader(PathTo + "\\" +VERSION_FILE);
while ((VersionFileLine = VersionFile.ReadLine()) != null)
{
if (VersionFileLine != "")
{
PatchVersion = Convert.ToInt16(VersionFileLine);
}
}
VersionFile.Close();

//удаляем файл
if (delete == true)
File.Delete(PathTo + "\\" +VERSION_FILE);

return PatchVersion;
}
return 0;
}

private void PlusPatchVersion()
{
int pVersion = this.GetPatchVersion(true);
pVersion++;
if (File.Exists(PathTo + "\\" + VERSION_FILE))
File.Delete(PathTo + "\\" + VERSION_FILE);

FileStream vFile = new FileStream(PathTo + "\\" +VERSION_FILE, FileMode.Create, FileAccess.Write);
StreamWriter svFl = new StreamWriter(vFile);
svFl.WriteLine(pVersion.ToString());
svFl.Close();
vFile.Close();
}

private void Step3_Load(object sender, EventArgs e)
{
PB_FULL.Maximum = AllFiles;

this.PlusPatchVersion();

// создаем наши 2 главных файла

ShowMsgProgress("Проверяем наличие файла full.list");
if (System.IO.File.Exists(PathTo + "\\full.list"))
{
ShowMsgProgress("Файл full.list найден");
if (File.Exists(PathTo + "\\_full.list"))
{
File.Delete(PathTo + "\\_full.list");
}

ShowMsgProgress("Переименовываем full.list в _full.list");
File.Move(PathTo + "\\full.list", PathTo + "\\_full.list");
}
ShowMsgProgress("Создаем файл full.list");
FileStream fFl = new FileStream(PathTo + "\\full.list", FileMode.Create, FileAccess.Write);
fFl.Close();

ShowMsgProgress("Проверяем наличие файла critical.list");
if (System.IO.File.Exists(PathTo + "\\critical.list"))
{
ShowMsgProgress("Файл critical.list найден, убиваем");
File.Delete(PathTo + "\\critical.list");
}
else
{
ShowMsgProgress("Файл critical.list не найден.");
}

ShowMsgProgress("Создаем файл critical.list");
FileStream cFl = new FileStream(PathTo + "\\critical.list", FileMode.Create, FileAccess.Write);
cFl.Close();
// усе файлы есть, погнали дальше
this.BW_MAIN.RunWorkerAsync(2000);
}

private void Step3_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}

private void BW_MAIN_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker bw = sender as BackgroundWorker;
this.Compile();
}

private void Compile()
{
Crc32 crc32 = new Crc32();

int FullFileProgress = 0;
bool FulFileExist = false;
bool CriticalExist = true;

if (CL.Count <= 0)
CriticalExist = false;

if (CriticalExist)
{
ShowMsgProgress("Есть критические файлы в обновлении");
}
ShowMsgProgress("Открываем файл critical.list на запись");

FileStream fsCU = new FileStream(PathTo + "\\critical.list", FileMode.Open, FileAccess.Write);
StreamWriter sCU = new StreamWriter(fsCU);


ShowMsgProgress("Открываем файл full.list на запись");

FileStream fsFU = new FileStream(PathTo + "\\full.list", FileMode.Open, FileAccess.Write);
StreamWriter sFU = new StreamWriter(fsFU);

ShowMsgProgress("Проверяем наличие файла _full.list");
if (File.Exists(PathTo + "\\_full.list"))
FulFileExist = true;

if (FulFileExist)
{
ShowMsgProgress("Файл предшествующего обновления найден!");
ShowMsgProgress("При обновлении будем учитывать его данные");
}

ShowMsgProgress("Начинаем педалить");
DirectoryInfo diFromDir = new DirectoryInfo(@PathClient);
DirectoryInfo[] diFromArr = diFromDir.GetDirectories();

foreach (DirectoryInfo DirName in diFromArr)
{
DirectoryInfo fFromDir = new DirectoryInfo(@PathClient + "/" + DirName);

ShowMsgProgress("Читаем директорию: " + DirName);

foreach (FileInfo Fname in fFromDir.GetFiles())
{

//params
bool ToZip = true;

UpdateFileProgress(0);

ShowMsgProgress("Проверяем есть ли в обновлениях директория: " + DirName);
if (!System.IO.Directory.Exists(PathTo + "\\" + DirName))
{

ShowMsgProgress("Нихера нету, создаем директорию: " + DirName);
System.IO.Directory.CreateDirectory(Path To + "\\" + DirName);
}

ShowMsgProgress("Собираем информаци о файле: " + Fname);

string FileHash = crc32.Get(PathClient + "\\" + DirName + "\\" + Fname);

if (FulFileExist)
{
string line;

StreamReader readLastAllFile = new StreamReader(@PathTo + "\\_full.list");
//readLastAllFile.
while ((line = readLastAllFile.ReadLine()) != null)
{
string[] sLine = line.Split(delimeter, StringSplitOptions.RemoveEmptyEntries);
if (sLine[0].Trim() == DirName+"\\"+Fname)
{
if (File.Exists(PathTo + "\\" + sLine[0] + ".zip"))
{
ShowMsgProgress("Файл: " + Fname + " уже есть в обновлениях.");
ShowMsgProgress("Проверяем файл: " + Fname + " на наличие модификаций");

if (FileHash == sLine[2].Trim() && sLine[4].Trim() == crc32.Get(PathTo + "\\" + sLine[0] + ".zip"))
{
ShowMsgProgress("Хеш файла: " + Fname + " совпал, файл не обновлялся. Пропускаем");
ToZip = false;
}
}
}
}
readLastAllFile.Close();
}

if (ToZip)
{
ShowMsgProgress("Архивируем файл: " + PathClient + "\\" + DirName + "\\" + Fname);
using (ZipFile zip = new ZipFile()) // Создаем объект для работы с архивом
{
zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompress ion; // Задаем максимальную степень сжатия
zip.AddFile(@PathClient + "\\" + DirName + "\\" + Fname, "");
zip.Save(@PathTo + "\\" + DirName + "\\" + Fname + ".zip"); // Создаем архив
}
}
ShowMsgProgress("Собираем информацию о файле для обновлений");

FileInfo SizecF = new FileInfo(PathClient + "\\" + DirName + "\\" + Fname);
FileInfo SizecFz = new FileInfo(PathTo + "\\" + DirName + "\\" + Fname + ".zip");
string ZFHash = crc32.Get(PathTo + "\\" + DirName + "\\" + Fname + ".zip").ToString();

sFU.WriteLine(DirName + "\\" + Fname + "|" + SizecF.Length + "|" + FileHash.ToString() + "|" + SizecFz.Length + "|" + ZFHash);

if (CL.Contains(DirName + "\\" + Fname))
{
sCU.WriteLine(DirName + "\\" + Fname + "|" + SizecF.Length + "|" + FileHash.ToString() + "|" + SizecFz.Length + "|" + ZFHash);
}


//tick
FullFileProgress++;
UpdateProgressFull(FullFileProgress);
}
}
ShowMsgProgress("Завершение операций");

if (CriticalExist)
{
sCU.Close();
}

sFU.Close();


if (FulFileExist)
File.Delete(PathTo + "\\_full.list");

ShowMsgProgress("Создание обновления успешно завершено");
}

private void BW_MAIN_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.PB_FILE.Style = ProgressBarStyle.Blocks;
}
}
}

[/CODE]


Проблема в том что патчер файлов не видет папки находящиеся в папках и пустые папки
и темболее ещо и внутриние папки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2019, 15:35
Помогаю со студенческими работами здесь

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

Перемещение определённых файлов (кроме находящихся в скрытых папках) с сохранением структуры исходной папки
Доброго времени суток господа. Вопрос следующий : Нужно с папки folder переместить(с удалением) все файлы с маской расширений со всех...

Удаление всех файлов в папках и под папках, кроме тех в которых в названии есть определенно слово
Всем привет, я так сказать чайник чтоле, я посерфил форум нашел пару похожих тем но всеже не то что мне надо. Задача такова, есть папка в...

Из нескольких папок копировать папки с файлами в другие папки, не заменяя ничего в конечных папках
Добрый день! Помогите пожалуйста сделать батник. Как сделать чтоб из &quot;нескольких папок&quot; копировать &quot;папки с файлами&quot; в...

Копирование TXT-файлов из одной папки и BMP-файлов из другой папки в папку, в которой находится пакетный файл
Доброго времени суток. У кого есть возможность сообразить какой код мне нужет чтобы сделать вот это) - Копирование всех файлов с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru