Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Адренс Аксидор
5 / 5 / 1
Регистрация: 16.05.2012
Сообщений: 92
#1

Запуск и последующее удаление всех исполняемых файлов из каталога - C++

22.02.2014, 15:49. Просмотров 539. Ответов 4
Метки нет (Все метки)

Здравствуйте. Прошу помочь написать программу, которая бы запускала все исполняемые файлы (.exe, .bat, .cmd) из заданного каталога, а потом удаляла их.
Как запустить исполняемый файл мне понятно, как удалить его вроде бы тоже. Вопрос вот в чем: как сделать это именно из каталога и с файлами с определенным расширением? Я правильно понял, что нужно использовать Get и SetCurrentDirectory? Или есть другая альтернатива UNIX-овым opendir и readdir?
Вот писал прогу, которая запускает файлы из конфигурационного, можете помочь сделать так, чтобы она читала их из каталога, например, H?
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
#include <Windows.h>
#include <fstream>
#include <iostream>
 
using namespace std;
 
int main()
{
    ifstream conf("H:/config.txt");
    char *AppName = new char[100], *t = new char[10];
    int time;
    STARTUPINFO si = {sizeof(si)};
    PROCESS_INFORMATION pi;
 
    if (!conf.is_open())
    {
        cout << "File not found.\n";
        return 0;
    }
 
    while (!conf.eof())
    {
 
        conf.getline(AppName, 100);
        cout << "Process: " << AppName << " Status: ";
 
        conf.getline(t, sizeof(t));
        time = atoi(t) * 1000;
        if (CreateProcess(AppName, NULL, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi))
        {
 
            CloseHandle(pi.hThread);
 
            if (WaitForSingleObject(pi.hProcess, time) == WAIT_TIMEOUT)
            {
                TerminateProcess(pi.hProcess, 0);
                cout << "Ne uloghilsa;" << endl;
            }
            else
                cout << "Uloghilsa;" << endl;
            CloseHandle(pi.hProcess);
        }
    }
    conf.close();
 
    return 1;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 15:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запуск и последующее удаление всех исполняемых файлов из каталога (C++):

Написать программу, которая обеспечивает:начальное формирование каталога файлов;вывод каталога файлов;удаление файлов... - C++
Уважаемые хакеры!Прошу вашей помощи!Я в СИ не особо шарю.((( А на днях уже сдавать.Очень рассчитываю на любую вашу помощь. Вот задача. ...

Операции создания каталога, изменения временного каталога, удаление файла и директории - C++
Написать программу, которая позволяет выполнять операции создания каталога, изменения временного каталога, удаление файла и директории...

перации создания каталога, изменения временного каталога, удаление файла и директории (рекурсивно) - C++
пожалуйста напишите программу, которая позволяет выполнять операции создания каталога, изменения временного каталога, удаление файла и...

Каталоги исполняемых файлов - C++
При подключении каталога исполняемых файлов в VS2010, построение даже пустых проектов говорит: 1&gt;InitializeBuildStatus: ...

Слияние нескольких исполняемых файлов - C++
Программа выполняет слияние бинарных файлов, указанных в командной строке в выходной, отличный от входных. Формат командной строки...

Опрос папки и удаление из неё всех файлов кроме заданного расширения - C++
При построении программы , вылезла проблема с бесконечным циклом, то есть , нужно вести опрос постоянно папки , и удалять из неё лишние...

4
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.02.2014, 16:04 #2
Адренс Аксидор, все файлы одновременно или по очереди?
0
Адренс Аксидор
5 / 5 / 1
Регистрация: 16.05.2012
Сообщений: 92
22.02.2014, 16:07  [ТС] #3
В задании не сказано, скорее всего по очереди
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.02.2014, 16:11 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Если нужно просто найти все файлы с расширением exe и что-нибудь сделать с ними, то как-то так.
C++
/// только для MinGW !
#include <stdio.h>
#include <string.h>
#include <dir.h>
 
 
int main(int argc, char *argv[])
{
    _finddata_t f;
    
    long d = _findfirst("*.exe", &f);
    
    if(d != -1)
    {
        printf("%s %ld\n", f.name, f.size);
 
        // здесь запускаем первую найденую екзешку
 
        for(int r = 0; ; )
        {
            if(r = _findnext(d, &f) != 0) break;
            printf("%s %ld\n", f.name, f.size);
 
            // здесь запускаем остальные екзешки
        }
    }
    else
    {
        printf("No %s files\n", "*.exe");
    }
    _findclose(d);
}
Добавлено через 1 минуту
Для visual с++ названия функций findnext, findclose и findfirst немного отличаются.
1
Адренс Аксидор
5 / 5 / 1
Регистрация: 16.05.2012
Сообщений: 92
22.02.2014, 18:05  [ТС] #5
А как выбрать каталог, в котором будем работать? Просто больше всего проблемы именно в установке рабочего каталога. В UNIX-е я использовал opendir и readdir, а вот как делать это в Windows-е не знаю.

Добавлено через 10 минут
Пытался делать на основе этого примера:
C++
1
2
3
4
5
6
TCHAR buffer[MAX_PATH];
GetCurrentDirectory(sizeof(buffer),buffer);
cout << buffer << endl;
SetCurrentDirectory("C:\\1");
GetCurrentDirectory(sizeof(buffer),buffer);
cout << buffer << endl;
Все, вроде бы исправил

Добавлено через 1 час 19 минут
Еще вот такой вопрос возник: DeleteFile(f.name); удаляет bat и cmd файлы, но не удаляет файлы с расширением exe. В чем может быть причина?

Добавлено через 15 минут
И в этом разобрался. Большое спасибо за помощь
1
22.02.2014, 18:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2014, 18:05
Привет! Вот еще темы с ответами:

Вывод списка исполняемых файлов (включая информацию о файлах) в заданном каталоге - C++
Разработать прикладную программу, осуществляющую выявление по содержимому в заданном каталоге на диске ПК всех исполняемых файлов и вывод...

Запуск командной строки VS из конкретного каталога - C++
Подскажите плиз, как запустить командную строку Visual Studio Command Promt (vsvars32.bat) из необходимого каталога, так как надоело...

Удаление непустого каталога - C++
Написал функцию удаления непустого каталога deltree, компилируется нормально, да и с логикой ВРОДЕ все норм, т.к. блок-схему сперва...

Дописать удаление товаров из каталога - C++
Разработать программу ведения каталога товаров на основе структур, имеющих следующие поля: номер, дата, наименование товара, цена,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru