Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   копирование папок (с++/с) (https://forum.antichat.xyz/showthread.php?t=38147)

X.Trojn 17.04.2007 09:51

копирование папок (с++/с)
 
ПОЖАЛУЙСТА кому не лень то подскажите как копировать папки в с++/с , мне понятно что с помощью функции винапи,но реализовать неполучается.....,а нада очень очень)))

или так,тот кто мне поможет получит семизнак!

Х8y-xy5-1

заранее благодарен!!!


[Great]: Учись темы называть. В след. раз минус

hidden 17.04.2007 11:45

http://msdn2.microsoft.com/en-us/library/ms647743.aspx
Это если тебе окно с индикатором копирования не будет мешать))

Иначе придётся рекурсивно копировать каждый файл из директории и каждой поддиректории. (FindFirstFile, FindNextFile, FindClose, CopyFile)

Семизнак не нужен.

X.Trojn 23.04.2007 15:45

так,ребята нада помощь.нада пример копирования папки на языке с++.

что можно взамен дать за это??

очень просто нада.

je0n 23.04.2007 16:18

блииин чувак, ну тебе же дали ссылку на функцию. Вот, что я замутил за 10 минут:
Код:

int CopyFiles(char* source,char* target)
{
        SHFILEOPSTRUCT cf;
        cf.hwnd=NULL;
        cf.wFunc=FO_COPY;
        cf.pFrom=source;
        cf.pTo=target;
        cf.fFlags=FOF_NOCONFIRMMKDIR;
        if(SHFileOperation(&cf))return 1;else return 0;
}

Семь строчек кода и все. Использовать так:
тебе надо скопировать папку c:\1\ в d:\1\, вызываешь вот так:
Код:

CopyFiles("c:\\1\\*","d:\\1\\");
P.S. А чтобы копировалось незаметно надо добавить одну строчку и все. В той ссылке, что тебе дал hidden все прекрасно описано как сделать это и не только. Юзай MSDN

X.Trojn 23.04.2007 16:37

а шоб както на фтп? примерно на 10.0.0.1 (понятно что локальное)

пожалуйста , может чемто смогу отблагодарить

je0n 23.04.2007 16:40

пффффф, а сразу че не говорил?
это уже вообще другой вопрос. Могу тебе предложить изучить протокол фтп и юзать сокеты. Хотя может есть варианты и полегче. Но полюбас это уже не 7 строчек.

X.Trojn 23.04.2007 16:43

ЭТО плохо. другой вопрос?если какаято команда в кмд,которая скрывает окошко консоли?

je0n 23.04.2007 17:03

не знаю можно ли скрыть cmd (точно можно, но хз как), но есть функция ShellExecute()
Вот ей можешь выполнять теже комманды что и в cmd в скрытом режиме. Как не знаю, ей не пользовался. Только что вот запустил ей блокнот:
Код:

ShellExecute(hwnd,"open","c:\\windows\\notepad.exe","","",SW_NORMAL);
В MSDN написано, там есть скрытый режим. Так что думаю можно юзать стандартного виндового фтп клиента с помощью этой функции не заметно.

sni4ok 23.04.2007 17:36

Цитата:

Сообщение от je0n
тил ей блокнот:
Код:

ShellExecute(hwnd,"open","c:\\windows\\notepad.exe","","",SW_NORMAL);

так плохо- результат не вернётся, чтобы результат посмотреть(правда в ущерб асинхронности), стоит делать через пайпы

Код:

std::string Shell(std::string cmd)
{
        FILE *pf;
        if( (pf = _popen(cmd.c_str(), "rt")) == NULL )
                throw std::runtime_error("_popen error");

        std::vector<char> buf(4097);
        std::string ret;

        for(;;){
                char* str = fgets(&buf[0], int(buf.size()) - 1, pf);
                if(!str) break;

                Decode_DOS_to_Win(&buf[0]);

                ret += std::string(&buf[0]);
        }

        _pclose(pf);
        return ret;
}


hidden 23.04.2007 20:28

А если через апи захочешь делать, тут есть все примеры, для поиска, получения и закачки файлов на фтп, причём как-раз на С++
http://msdn2.microsoft.com/en-us/library/aa384180.aspx


Время: 23:24