С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 19
1

Поиск всех файлов в папке и смена их расширения на mp4

18.11.2017, 21:15. Показов 1807. Ответов 6

Author24 — интернет-сервис помощи студентам
Код должен искать все файлы в папке и менять их разрешение на .mp4
Не работает

C++ (Qt)
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
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <cstdlib>
 
using namespace std;
 
int main() 
{ 
    WIN32_FIND_DATA f;
    HANDLE h = FindFirstFile("D:/rename/*", &f);
    int status; 
if(h != INVALID_HANDLE_VALUE)
{
do
{
char *razr = ".mp4";
char *oldname = f.cFileName;
string *newname = string(oldname).razr;
status = rename(oldname, newname);
} while(FindNextFile(h, &f));
}
else
{
fprintf(stderr, "Error opening directory\n");
}
    return 0; 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2017, 21:15
Ответы с готовыми решениями:

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

Как изменить расширения всех файлов в одной папке?
Здравствуйте. Как сделать так, чтобы по нажатию кнопки &quot;button&quot;, расширения всех файлы в...

Поиск всех файлов .txt в нужной папке
Здравствуйте! Нужна помощь! Мне нужно добавить в ListBox1 названия всех файлов txt и чтобы при...

Поиск всех файлов в папке и вывод их имен
Пытаюсь сделать программку, которая будет выводить название всех файлов формата .txt в определенной...

6
Эксперт С++
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
18.11.2017, 21:57 2
Цитата Сообщение от invectro Посмотреть сообщение
string *newnameото то = string(oldname).razr;
это что за х?
0
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 19
19.11.2017, 10:59  [ТС] 3
я не силен в C++. только начал обучаться. через яндекс нашел. вот подскажи как правильно будет

Добавлено через 1 час 49 минут
я так понял string нет в C++ ?

Добавлено через 9 часов 22 минуты
кто пояснит то как правильно написать
0
Модератор
Эксперт С++
13714 / 10913 / 6476
Регистрация: 18.12.2011
Сообщений: 29,141
19.11.2017, 11:57 4
C++
1
2
3
4
5
char razr[] = ".mp4";
char *oldname = f.cFileName;
char newname[100];
strcpy(newname,oldname);
strcat(newname,razr);
получится
старое_имя.старый_тип.mp4
1
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 19
19.11.2017, 15:02  [ТС] 5
получится
старое_имя.старый_тип.mp4
Почти получилось. Теперь осталось только записать новое имя в файл. Я попробовал так:

C++
1
2
3
4
5
6
7
char razr[] = ".mp4";
char *oldname = f.cFileName;
char newname[100];
strcpy(newname,oldname);
strcat(newname,razr);
cout << newname << endl;
rename(oldname, newname);
В консоли показывает, что все файлы имеют нужное разрешение, все хорошо. А вот переименование не проиходит, чтото не хватает в функции rename

Добавлено через 25 минут
C++
1
status = rename(oldname, newname);
так тоже не переименовывает

Добавлено через 51 секунду
хотя компилируется без ошибок, в чем же дело тогда?
0
Модератор
Эксперт С++
13714 / 10913 / 6476
Регистрация: 18.12.2011
Сообщений: 29,141
19.11.2017, 15:46 6
Лучший ответ Сообщение было отмечено invectro как решение

Решение

Нужно указывать полный путь.

Вот так работает:
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
//#include <iostream>
#include <windows.h>
#include <stdio.h>
//#include <stdlib.h>
 
//using namespace std;
 
int main() 
{ 
    WIN32_FIND_DATA f;
    HANDLE h = FindFirstFile("D:\\temp\\*.gif", &f);
    int status; 
    if(h != INVALID_HANDLE_VALUE)
    {
        do
        {
            char razr[] = ".mp4";
            char oldname[100]="D:\\temp\\";
            strcat(oldname,f.cFileName);
            char newname[100]="";
            strcat(newname,oldname);
            strcat(newname,razr);
            status = rename(oldname, newname);
        } while(FindNextFile(h, &f));
    }
    else
    {
        fprintf(stderr, "Error opening directory\n");
    }
    return 0; 
}
1
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 19
19.11.2017, 16:13  [ТС] 7
Спасибо за помощь, теперь все работает как надо.
0
19.11.2017, 16:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2017, 16:13
Помогаю со студенческими работами здесь

Смена расширения всем файлам в папке на одно
Есть папка с файлами, iso, bin, gen, smd... Нужно всем им поставить расширение - gen. Так то есть...

Поиск имен всех файлов, находящихся в определенной папке
Народ как записать (например в Memo) имена всех файлов, находящихся в определеннои папке??

Поиск файлов определенного формата в папке, и во всех вложенных
Всем привет. Такая задача. Имеетса папка, в которой находятса многа папок. И в этих папках есть...

Поиск в папке и подпапке всех файлов за сегодняшнюю дату
Доброго времени суток. Помогите пожалуйста, нужно запилить процедуру поиска файлов в папке и ее...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru