Копирование, перемещение и удаление файлов и папок
Например, в командной строке пишешь
copy.exe C:\A A:\B
и все содержимое папки А диска С: копируется в папку В на диске А:
delete.exe A:\B - удаление
move.exe C:\A A:\B - перемещение
Я понимаю, что в ф-ции main надо писать
int argc, char* argv[]
а вот как осуществлять операции с файлами не знаю.
Если у кого-то есть исходники, присылайте на [email]avatara@ukr.net[/email]
Кто-нибудь может подсказать как осуществить копирование, перемещение и удаление файлов и папок. (приложение консольное)
Например, в командной строке пишешь
copy.exe C:\A A:\B
и все содержимое папки А диска С: копируется в папку В на диске А:
delete.exe A:\B - удаление
move.exe C:\A A:\B - перемещение
Я понимаю, что в ф-ции main надо писать
int argc, char* argv[]
а вот как осуществлять операции с файлами не знаю.
Если у кого-то есть исходники, присылайте на [email]avatara@ukr.net[/email]
Функции SDK не подойдут?
DeleteFile(...), CopyFile(...), MoveFile(...)
Функции SDK не подойдут?
DeleteFile(...), CopyFile(...), MoveFile(...)
К сожалению необходимо написать их собственными руками.
Я так понял надо делать рекурсивный обход. Как это сделать я знаю, а вот что делать дальше нет.
Знаю что для создании папки надо воспользоваться ф-цией _mkdir а для удаления _rmdir.
К сожалению необходимо написать их собственными руками.
Я так понял надо делать рекурсивный обход. Как это сделать я знаю, а вот что делать дальше нет.
Знаю что для создании папки надо воспользоваться ф-цией _mkdir а для удаления _rmdir.
есть похожие функции и для копирования, и удаления файла.
если подождешь до следующей недели, я посмотрю на работе - сейчас я на выходных - я что-то похожее использовал в одном проекте.
есть похожие функции и для копирования, и
После долгий мучений родил такую программу по удалению. Уже сделал и копирование и перемещение Единственная проблема в следующем: При удалении прога проверяет атрибут "только чтение" и при нахождении его предлагает -
1-удалить 2- пропустить 3- удалить все 4- отмена
Получается все, но "удалить все" работает как-то неправильно. Посмотрите код пожалуйста, может чего-нибудь подскажете??
#include <iostream.h>
#include <windows.h>
#include <io.h>
#include <stdio.h>
#include <direct.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
// Максимальная длина пути к файлу
#define MAX_PATH 260
void DelDir(char* from_path)
{
char* temp = new char [260];
int choice = 0;
strcpy(temp, from_path);
strcat(temp, "\\*.*");
_finddata_t *f = new _finddata_t;
int OK = _findfirst(temp, f);
int Done = OK;
while (Done != -1)
{
if (strcmp(f->name, ".") == 0 || strcmp(f->name, "..") == 0)
{
Done = _findnext(OK, f);
continue;
}
if (f->attrib & 0x10)
{
sprintf(temp, "%s\\%s", from_path, f->name);
DelDir(temp);
_rmdir(temp);
}
else
{
sprintf(temp, "%s\\%s", from_path, f->name);
if ((_access(temp,2) == -1) && choice != 3)
{
printf("File %s is a read-only\n", temp);
printf("1- Delete 2- Pass 3- Delete all 4- Cancel\n");
scanf("%d", &choice);
switch(choice)
{
case 1: _chmod(temp, _S_IWRITE);
remove(temp);
choice = 0;
break;
case 2: choice = 0;
break;
case 3: _chmod(temp, _S_IWRITE);
remove(temp);
choice = 3;
break;
case 4: exit (0);
break;
default:
printf("Incorrect choice, operation abort!!");
break;
}
}
else
_chmod(temp, _S_IWRITE);
remove(temp);
}
Done = _findnext(OK, f);
}
delete [] temp;
_findclose(OK);
delete f;
}
void main (int argc, char* argv[])
{
char Path[MAX_PATH];
// Если в командкой строке 1 параметр (т. е. путь к нашему exe-шнику)
if(argc == 1)
{
// Запрашиваем все необходимые данные
printf("Input path to file: ");
gets(Path);
DelDir(Path);
}
else if (argc == 2)
{
strcpy(Path, argv[1]);
DelDir(Path);
}
else
{
printf("Incorrect parameters: "
"usage <program> or "
"<program> <path to delete>\n");
return;
}
}
Все есть в присоединенном файле.
Все есть в присоединенном файле.
Теперь все работает переменную choice в данном примере надо было сделать глобальной или static !!