Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
.NET 3.x

Копирование папок и подпапок по нажатию кнопки

02.08.2017, 12:39. Показов 6141. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил заняться c# для себя, ради интереса. Решил сделать программу "библиотеку", достающую дистрибутивы из сети и запускающую их.
Следовательно, нужно, чтобы по нажатию кнопки дистрибутив копировался на локальный диск, и после запускался от имени администратора.

Однако я никак не могу понять, как это сделать. Посмотрел кучу примеров копирования папок, но ни один из них не получается "засунуть" в кнопку, поскольку сразу кучу ошибок либо с переменными, либо с классами, либо еще с чем.

так как же запихать копирование (и далее) в кнопку?
C#
1
2
3
4
private void button2_Click(object sender, EventArgs e)
        {
 
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.08.2017, 12:39
Ответы с готовыми решениями:

Копирование папок и подпапок
есть задача, нужно скопировать всё что найдено по заданному пути в определенную папку, все параметры задаются через командную строку....

Копирование символа по нажатию кнопки
Требуется скопировать символ, при нажатии на кнопку. "символ" что бы копировался Private Sub Button1_Click(sender As Object, e As...

Как реализовать копирование фрейма по нажатию кнопки
Дан фрейм с несколькими текстбоксами. Необходимо по нажатию на "+" (что нужно сделать графически показано во вложении) создавать такой же...

19
 Аватар для Kloshar
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
02.08.2017, 14:55
Здесь нет ничего сложного. Для копирования файла достаточно воспользоваться классом File. Например:
C#
1
2
3
4
5
6
7
8
                try
                {
                    File.Copy(path1, path2);
                }
                catch (System.IO.IOException ex)
                {
                    Debug.WriteLine(ex);
                }
где path1 - имя исходного файла с полным путём, path2 - имя целевого файла.
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
02.08.2017, 15:01
А если требуется переместить файл ?
0
 Аватар для Kloshar
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
02.08.2017, 15:23
Почтальон,
в этом классе есть метод и для перемещения File.Move(path, path2);
0
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
02.08.2017, 15:23  [ТС]
нужно не один файл. А полную структуру папок и подпапок.
Я нашел такой способ,

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    private void button2_Click(object sender, EventArgs e)
        {
            //откуда копируем
            string SourcePath = @"";
            //куда копируем
            string DestinationPath = @"C:";
 
            MessageBox.Show("Начинаем копирование");
 
            // First create all of the directories
            foreach (string dirPath in Directory.GetDirectories(SourcePath, "*.*", SearchOption.AllDirectories))
                Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath));
 
            // Copy all the files
            foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
                File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath));
 
            MessageBox.Show("Копирование завершенно");
 
        }
Однако, очевидный минус - если папка с файлами уже существует, то выбивает ошибку.

Далее я уже развиваю свою идею - нужен прогресс бар, ибо порой копирование идет по 5-10 минут. А следовательно, как я понимаю, надо делать отдельные методы, и с кнопок уже ссылки на них. И вот тут я уже вообще запутался.

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

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
     private void button2_Click(object sender, EventArgs e)
        {
            //откуда копируем
            string SourcePath = @"";
            //куда копируем
            string DestinationPath = @"C:";
 
           
 
        }
        public void CopyDirs(string SourcePath, string DestinationPath)
        {
 
            MessageBox.Show("Начинаем копирование");
 
            // First create all of the directories
            foreach (string dirPath in Directory.GetDirectories(SourcePath, "*.*", SearchOption.AllDirectories))
                Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath));
 
            // Copy all the files
            foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
                File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath));
 
            MessageBox.Show("Копирование завершенно");
        }
Рою гугл и мануалы, но что-то никак не въеду. Можете на конкретном примере показать?

Далее прогресс бар как-то приделать к этому надо...
0
 Аватар для Kloshar
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
02.08.2017, 15:29
Цитата Сообщение от kerok Посмотреть сообщение
А следовательно, как я понимаю, надо делать отдельные методы, и с кнопок уже ссылки на них. И вот тут я уже вообще запутался.
...
CopyDirs(SourcePath, DestinationPath );
...
1
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
02.08.2017, 15:43  [ТС]
Как все сложно оказывается (тут должна быть картинка фейспалма) .
Что-то я, похоже, заработался. Спасибо.
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
02.08.2017, 16:51
Цитата Сообщение от kerok Посмотреть сообщение
Однако, очевидный минус - если папка с файлами уже существует, то выбивает ошибку.
добавь проверки на существование директории
C#
1
Directory.Exists
и существование файла
C#
1
File.Exists
1
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
02.08.2017, 17:45  [ТС]
А как сделать, чтобы все файлы и папки перезаписывались?

И вообще не понимаю как привязать прогресс бар к копированию. Ну вообще.
Что нужно для этого? Может у кого есть ссылка для чтения соответствующая?
0
 Аватар для Kloshar
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
02.08.2017, 17:58
Цитата Сообщение от kerok Посмотреть сообщение
А как сделать, чтобы все файлы и папки перезаписывались?
File.Copy(oldPath, newPath, overwrite);
последняя булевая переменная отвечает за перезапись.
Цитата Сообщение от kerok Посмотреть сообщение
И вообще не понимаю как привязать прогресс бар к копированию. Ну вообще.
Что нужно для этого? Может у кого есть ссылка для чтения соответствующая?
Прогресс бар и копирование-удаление файлов
1
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
04.08.2017, 12:47  [ТС]
В общем, я понял, что ничего не понял. А с потоками вообще.
Не могли бы помочь и на конкретном примере показать как сделать поток на копирование? Что куда вставлять. Может на конкретном примере что-то пойму, и дальше смогу сделать.
Спасибо.

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
namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {        
        public Form1()
        {
            InitializeComponent();
        }
    
            private void button2_Click(object sender, EventArgs e) // Кнопка
        {           
            CopyDirs(@"\\...", true);
            Start(@"c:\...");
        }    
                   
        public void CopyDirs(string SourcePath, string DestinationPath, bool overwrite)
        {
            if (!File.Exists(DestinationPath))
            if (!Directory.Exists(DestinationPath))
            {
                    MessageBox.Show("Начинаем копирование в " + DestinationPath, "Начинаем копирование");
                    // First create all of the directories
                    foreach (string dirPath in Directory.GetDirectories(SourcePath, "*.*", SearchOption.AllDirectories))
                    Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath));
                    // Copy all the files
                    foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
                    File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath), true);
                    MessageBox.Show("Скопировано в " + DestinationPath + " .", "Завершенно");
            }            
            else
            {
             string message = "Перезаписать " + DestinationPath + " ?";
             string caption = "Файлы существуют.";
             MessageBoxButtons buttons = MessageBoxButtons.YesNo;
             DialogResult result;
             // Displays the MessageBox.
             result = MessageBox.Show(message, caption, buttons);
                    if (result == System.Windows.Forms.DialogResult.Yes)
                    {
                     MessageBox.Show("Начинаем копирование с заменой файлов");
                     // First create all of the directories
                     foreach (string dirPath in Directory.GetDirectories(SourcePath, "*.*", SearchOption.AllDirectories))
                     Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath));
                     // Copy all the files
                     foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
                     File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath), true);
                     MessageBox.Show("Скопировано в " + DestinationPath + " .", "Завершенно");
                    }
            }
        } //Копирование файлов.
 
        public void Start(string programm)
        {
            string message = "Запустить " + programm + " ?";
            string caption = "Запуск установки.";
            MessageBoxButtons buttons = MessageBoxButtons.YesNo;
            DialogResult result;
            // Displays the MessageBox.
            result = MessageBox.Show(message, caption, buttons);
            if (result == System.Windows.Forms.DialogResult.Yes)
            { 
                Process.Start(programm);
            }
        } // Запуск программы установки.
}
}
0
 Аватар для Kloshar
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
04.08.2017, 13:46
Не буду лезть с советами, что неплохо бы теорию почитать.
Лучше приведу пример. Допустим, что я копирую файлы из папки с екзешником на рабочий стол. У меня рабочий стол обычно девственно чист и видно, что там появляется.
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
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string oldPath = AppDomain.CurrentDomain.BaseDirectory;
            string newPath = @"c:\Users\kloshar\Desktop";
 
            //Запускаем первый поток, в котором выводим числа в консольное окно
            Task tsk1 = new Task( () => { for (int i = 0; ; i++) { Debug.Write(i + " "); } });
            tsk1.Start();
            
            //Запускаем вторую задачу (поток), в котором копируем файлы на рабочий стол
            Task tsk2 = new Task( () => CopyDirs(oldPath, newPath, true) );
            tsk2.Start();
        }
 
        void CopyDirs(string SourcePath, string DestinationPath, bool overwrite)
        {
            string[] files = Directory.GetFiles(SourcePath);
            foreach(string str in files)
            {                
                File.Copy(str, DestinationPath + Path.GetFileName(str));
            }
        }
    }
Как видно, создаётся две задачи (или потока). В первом считаем до бесконечности, во втором копируем.
1
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
10.08.2017, 13:35  [ТС]
Цитата Сообщение от Kloshar Посмотреть сообщение
Не буду лезть с советами, что неплохо бы теорию почитать
Да вроде читаю. Только выходит как в той самой пословице "гляжу в книгу - вижу фигу".
Вернее просто не могу адаптировать общие примеры под мой конкретный случай.
Тут вариантов два. Либо уж садиться изучать буквально с нуля, по "школьным учебникам". Либо вот выклянчивать конкретные примеры по форумам

Вот, например, с прогресс баром.
Количество файлов высчитал, хорошо.
Метод копирования сделал, хорошо.
Прогресс бар сделал, хорошо. Простая прокрутка по количеству файлов прогресс бара работает.
И все.
Как передать переменную количества файлов в прогресс бар? Рылся рылся в теории - и зарылся. Если напрямую вызывать метод прогресс бара - то ясно. А вот не напрямую? Создание глобальной переменной - опять же в теории все отлично, а на практике...
Так же прогрессбар не работает в отдельном потоке. Вот тут уже даже в теории я не понял что надо делать.

То есть, по факту, "а воз и ныне там". Имеется:

Кнопка:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        private void button2_Click(object sender, EventArgs e) 
        {
            Thread tsk2 = new Thread(() => CopyDirs(@"\", @"C:", true));
            tsk2.Name = "Copying";
            tsk2.Start();
            tsk2.Join();
 
            Thread tsk3 = new Thread(() => Start(@"c:"));
            tsk3.Name = "Start Prog";
            tsk3.Start();
            tsk3.Join();
        }
Метод копирования:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        public void CopyDirs(string SourcePath, string DestinationPath, bool overwrite)
        {
            if (Directory.Exists(DestinationPath))
            {
                MessageBox.Show("Файлы существуют.");
            }
            else
            {
                // First create all of the directories
                foreach (string dirPath in Directory.GetDirectories(SourcePath, "*.*", SearchOption.AllDirectories))
                Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath));
                // Copy all the files
                foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
                File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath), true);
                MessageBox.Show("Скопировано в " + DestinationPath + " .", "Завершенно");
            }
 
        }
Просчет количества файлов:
C#
1
2
3
4
5
6
7
        public void files(string SourcePath)
        {
            DirectoryInfo di = new DirectoryInfo(SourcePath);
            int cnt = di.GetDirectories("*", SearchOption.AllDirectories).Length + di.GetFiles("*", SearchOption.AllDirectories).Length;
            Console.ReadLine();
            progress(cnt);
        }
прогресс бар:
C#
1
2
3
4
5
6
7
8
9
                    public void progress(int gh)
        {
            progressBar1.Maximum = gh;
            for (int i = 1; i <= gh; i++)
            {
                progressBar1.Value = i;
                System.Threading.Thread.Sleep(100);
            }
        }

То есть мне надо сделать, в первую очередь, передачу переменной в прогресс бар. гуглеж подсказал только этот вариант. но этот вариант не работает, т.к. прогресс бар в основном потоке (форме?), и если запускать рассчет количества файлов в потоке (как оно нужно, по логике), то выбивает ошибку.

Второе - связать прогресс бар с самим копированием. Тут в принципе не знаю как делать. Теоретически, по ссылке выше - понятно. Что и как писать конкретно...
0
 Аватар для Kloshar
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
10.08.2017, 17:09
Почитайте msdn. Если верить официальной документации, а причин не верить у меня нет, то никаких потоков в случае копирования файлов с прогрессбаром не нужно.
Например этот пример: https://msdn.microsoft.com/ru-... .110).aspx.aspx в конце страницы.
Перепишем ваш метод CopyDirs () так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void CopyDirs(string SourcePath, string DestinationPath, bool overwrite)
        {
            DirectoryInfo di = new DirectoryInfo(SourcePath);
            int cnt = di.GetDirectories("*", SearchOption.AllDirectories).Length + di.GetFiles("*", SearchOption.AllDirectories).Length;
            progressBar1.Maximum = cnt;
 
            // First create all of the directories
            foreach (string dirPath in Directory.GetDirectories(oldPath, "*.*", SearchOption.AllDirectories))
                Directory.CreateDirectory(dirPath.Replace(oldPath, newPath));
 
            // Copy all the files
            foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
            {
                File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath), true);
                progressBar1.PerformStep();
            }
            MessageBox.Show("Скопировано в " + DestinationPath + " .", "Завершенно");
        }
Я добавил в него метод определения количества копируемых файлов и увеличение полоски прогрессбара.
После чего вызовем его так:
C#
1
CopyDirs(oldPath, newPath, true);
1
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
11.08.2017, 10:30  [ТС]
Спасибо.
Но потоки все-таки нужны. Если все в одном потоке делать, то вся программа просто зависает до конца копирования. В таком ключе прогресс бар вообще не нужен - программа висит, и ничего не показывает

Как я понимаю, надо само окно прогресс бара в отдельном от копирования потоке запустить.

Добавлено через 15 минут
Вот нашел, как сделать. Теоретически.
Сдается мне, что секрет вот тут раскрыт, да вот... "Гляжу в книгу, вижу фигу".

C#
1
2
3
4
5
6
7
8
   Thread t = new Thread(new ThreadStart(delegate 
            {
                {
                    this.Invoke(new ThreadStart(delegate
                    {
                    }));
                }
            }));
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
11.08.2017, 10:45
kerok, Сделай backgroundworker, и через него сделаешь свой прогрессбар. У него есть методы на изменение значений, после каждой иттерации даёшь +1 деление из N
0
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
11.08.2017, 11:18  [ТС]
Это мне, считай, все заново придется все изучать
Я посмотрел про него мельком. И решил, что попробую разобраться так. Если уж ничего не выйдет, тогда как запасной вариант)

В общем, сделал я так. Вроде работает, но с маленькой неточностью - при полном копировании прогресс бар заполняется не полностью, а процентов на 80. Можете подсказать, что тут не так?

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
 void CopyDirs2(string SourcePath, string DestinationPath, bool overwrite)
        {
                DirectoryInfo di = new DirectoryInfo(SourcePath);
            int cnt = di.GetDirectories("*", SearchOption.AllDirectories).Length + di.GetFiles("*", SearchOption.AllDirectories).Length;
            this.Invoke(new ThreadStart(delegate
            {
                progressBar1.Maximum = cnt;
                progressBar1.Visible = true;
                progressBar1.Minimum = 1;
                progressBar1.Value = 1;
                progressBar1.Step = 1;
            }));
            // First create all of the directories
            foreach (string dirPath in Directory.GetDirectories(SourcePath, "*.*", SearchOption.AllDirectories))
                Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath));
            // Copy all the files
                foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
            {
                File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath), true);
                this.Invoke(new ThreadStart(delegate
                {
                    progressBar1.PerformStep();
                }));
            }
           
                       
            MessageBox.Show("Скопировано в " + DestinationPath + " .", "Завершенно");
        }

PS. Маленькая догадка нуба - он не считает папки. То есть считает макс количество вместе с папками, а заполняет прогресс бар только на копирование файлов. Или это я пальцем в небо?

Добавлено через 5 минут
PPS. Проверил практическим путем. Так и есть.
Достаточно ли будет просто убрать вот это?
C#
1
di.GetDirectories("*", SearchOption.AllDirectories).Length +
Добавлено через 12 минут

Добавлено через 1 минуту
Все, большое спасибо за разъяснения. Вроде разобрался. В конечном итоге такое получилось.

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
        void CopyDirs(string SourcePath, string DestinationPath, bool overwrite)
        {
               DirectoryInfo di = new DirectoryInfo(SourcePath);
            int cnt = di.GetDirectories("*", SearchOption.AllDirectories).Length + di.GetFiles("*", SearchOption.AllDirectories).Length;
            this.Invoke(new ThreadStart(delegate
            {
                progressBar1.Maximum = cnt;
                progressBar1.Visible = true;
                progressBar1.Minimum = 1;
                progressBar1.Value = 1;
                progressBar1.Step = 1;
            }));
            // First create all of the directories
            foreach (string dirPath in Directory.GetDirectories(SourcePath, "*.*", SearchOption.AllDirectories))
            {
                Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath)); this.Invoke(new ThreadStart(delegate
                  {
                      progressBar1.PerformStep();
                  }));
            }
            // Copy all the files
            foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
            {
                File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath), true);
                this.Invoke(new ThreadStart(delegate
                {
                    progressBar1.PerformStep();
                }));
            }
           
                       
            MessageBox.Show("Скопировано в " + DestinationPath + " .", "Завершенно");
        } //Копирование с прогрессом
 
        private void button2_Click(object sender, EventArgs e) // Кнопка 
        {
            Thread tsk2 = new Thread(new ThreadStart(delegate 
             {
               {
                        CopyDirs(@"", @"C:", true);
               }
            }));
            tsk2.Name = "Copying";
            tsk2.Start();
            tsk2.Join();
 
          
 
 
                    Thread tsk3 = new Thread(() => Start(@"c:"));
                    tsk3.Name = "Start Prog";
                    tsk3.Start();
                    tsk3.Join();
        }
Добавлено через 5 минут
Я только что осознал, что на эту фигню у меня ушло 8 дней
0
11.08.2017, 13:40

Не по теме:

Цитата Сообщение от kerok Посмотреть сообщение
Я только что осознал, что на эту фигню у меня ушло 8 дней
это не фигня, это бесценный опыт ;)

1
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
11.08.2017, 15:20  [ТС]
Так, выскочила другая ошибка.
Метод копирования директорий крашится при копировании одного файла. Говорит, неправильно указана папка. Оно и логично, если я указываю конкретный один файл.
Это можно обойти, или для файла придется создавать другой метод?
Строчка с ошибкой:
C#
1
            int cnt = di.GetDirectories("*", SearchOption.AllDirectories).Length + di.GetFiles("*", SearchOption.AllDirectories).Length;
0
11.08.2017, 15:38

Не по теме:

???? Ты что ещё не скопировал? Столько дней прошло!!! Уже можно было полностью свой механизм копирования написать!!!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.08.2017, 15:38
Помогаю со студенческими работами здесь

Копирование значения из одной ячейки в другую с отступом вниз по нажатию кнопки
Приветствую! в VBA не силен поэтому прошу помощи форумчан, есть задача, что бы в табличке EXCEL при нажатии на кнопочку значения из одних...

Подсчет кол-ва папок и подпапок
Всем привет, делал прогу, которая считает кол-во папок и подпапок. Так вот че-то не все работает. Сейчас можно в бета тесте посмотреть(без...

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

Получение путей папок и подпапок
помогите с написанием кода для поиска папок и подпапок с получением списка путей

Автоматизация создания папок и подпапок
У нас есть система(имеется ввиду политика создания папок) по которой мы создаем папки клиента. Распишу более подробно: На диске D:\...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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