Как сделать такое задание: Перед каждым именем файла (regular file) вставить его номер (1, 2, 3 и т. д.). Номер выставляется в соответствии с тем, в каком порядке выдает результаты функция FindFirstFile, FindNextFile.
Смог сделать только это:
#include <windows.h>
#include <iostream>
#include<tchar.h>
using namespace std;
//strcpy, strcat
//_tcscpy,_tcscat
int main()
{
DWORD dwError = 0;
setlocale(LC_ALL, "rus");
WIN32_FIND_DATA find;
HANDLE hFind = FindFirstFile(_T("C:\\test\\*"), &find);
{
if (INVALID_HANDLE_VALUE == hFind)
{
cout << "Каталог не найден!" << endl;
system("pause");
return dwError;
}
do {
if (!(find.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) && !(find.dwFileAttributes == FILE_ATTRIBUTE_DEVICE))
_tprintf(_T("%s\n"), find.cFileName);
} while (FindNextFile(hFind, &find) != NULL);
dwError = GetLastError();
if (dwError == ERROR_NO_MORE_FILES)
{
FindClose(hFind);
cout << "В каталоге нет файлов!" << endl;
system("pause");
return dwError;
}
}////нет проверки на успешность FindFirstFile
FindClose(hFind); ////нет проверки на успешность FindClose
cout << "Файлы выведены на экран" << endl;
system("pause");
return 0;
}
А как переименовывать файлы не понимаю
Для переименования файлов есть сишная функция rename()
int rename(const char *old_filename, const char *new_filename)
или апишная MoveFile()
BOOL WINAPI MoveFile(
_In_ LPCTSTR lpExistingFileName,
_In_ LPCTSTR lpNewFileName
);
Но учтите, что переименовывать файлы внутри цикла FindFirstFile
/FindNextFile
нельзя. Иначе цикл будет находить новые файлы.
Вам нужно в этом цикле сложить все имена файлов в массив, вызвать FindClose()
, а потом пробежаться по этому массиву и переименовать файлы
Поскольку в вашем коде есть функция system("pause")
то не грех ей и воспользоваться:
system("rename " + old_name + " " + new_name);
Файлы переименовываются функцией MoveFile.
Функция MoveFile перемещает (переименовывает) файл или каталог (включая его дочерние элементы), или в том же самом каталоге, или во всех каталогах.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Задача: нужно проверить при запуске, подключено ли приложение к Bluetooth а, также к сети Интернет
Есть Service в приложении, который запускается при нажатии определённой кнопки (либо при запуске устройства через BroadcastReceiver)
Всем доброго утра! Проблема заключается в выборе способа: мне требуется забирать некоторый JSON, который отдается на API сервера (Nodejs по некоторому...