Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
5 / 5 / 0
Регистрация: 16.05.2012
Сообщений: 93

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

22.02.2014, 15:49. Показов 2367. Ответов 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)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2014, 15:49
Ответы с готовыми решениями:

Запуск и удаление исполняемых файлов из каталога
Здравствуйте. Помогите пожалуйста разобраться в некоторых местах кода. Полное задание: unit.cpp : ...

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

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

4
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.02.2014, 16:04
Адренс Аксидор, все файлы одновременно или по очереди?
0
5 / 5 / 0
Регистрация: 16.05.2012
Сообщений: 93
22.02.2014, 16:07  [ТС]
В задании не сказано, скорее всего по очереди
0
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.02.2014, 16:11
Лучший ответ Сообщение было отмечено Адренс Аксидор как решение

Решение

Если нужно просто найти все файлы с расширением 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 / 0
Регистрация: 16.05.2012
Сообщений: 93
22.02.2014, 18:05  [ТС]
А как выбрать каталог, в котором будем работать? Просто больше всего проблемы именно в установке рабочего каталога. В 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2014, 18:05
Помогаю со студенческими работами здесь

Запуск всех файлов из каталога
Доброго времени суток. Я решил написать программку для запуска всех файлов находящихся в указанном каталоге. Сейчас это работает только с 1...

Удаление из всех подкаталогов заданного каталога, включая вложенные, всех FGI-файлов размером не более 27 Кб
Задача - в C:\folders\ много поддиректорий, автоматически создаются файлы различные графические, и также файлы с расширением *.fgi весом не...

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

Запуск исполняемых файлов
Всем привет! У меня есть вот такая вот штука application/x-executable. Как я понимаю это исполняемый файл, и для меня человека проведшего...

Компилирование и запуск исполняемых файлов
Компилирую обычный .с файл: gcc chw.c. Содержимое файла chw.c: #include&lt;stdio.h&gt; int main(void) { printf(&quot;Hello...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru