копирование папок (с++/с)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by X.Trojn, 17 Apr 2007.

  1. X.Trojn

    X.Trojn New Member

    Joined:
    15 Apr 2007
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    ПОЖАЛУЙСТА кому не лень то подскажите как копировать папки в с++/с , мне понятно что с помощью функции винапи,но реализовать неполучается.....,а нада очень очень)))

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

    Х8y-xy5-1

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


    [Great]: Учись темы называть. В след. раз минус
     
    #1 X.Trojn, 17 Apr 2007
    Last edited by a moderator: 25 Apr 2007
    1 person likes this.
  2. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    http://msdn2.microsoft.com/en-us/library/ms647743.aspx
    Это если тебе окно с индикатором копирования не будет мешать))

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

    Семизнак не нужен.
     
  3. X.Trojn

    X.Trojn New Member

    Joined:
    15 Apr 2007
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    так,ребята нада помощь.нада пример копирования папки на языке с++.

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

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

    je0n Elder - Старейшина

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    блииин чувак, ну тебе же дали ссылку на функцию. Вот, что я замутил за 10 минут:
    Code:
    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\, вызываешь вот так:
    Code:
    CopyFiles("c:\\1\\*","d:\\1\\");
    P.S. А чтобы копировалось незаметно надо добавить одну строчку и все. В той ссылке, что тебе дал hidden все прекрасно описано как сделать это и не только. Юзай MSDN
     
    #4 je0n, 23 Apr 2007
    Last edited: 23 Apr 2007
  5. X.Trojn

    X.Trojn New Member

    Joined:
    15 Apr 2007
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    а шоб както на фтп? примерно на 10.0.0.1 (понятно что локальное)

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

    je0n Elder - Старейшина

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    пффффф, а сразу че не говорил?
    это уже вообще другой вопрос. Могу тебе предложить изучить протокол фтп и юзать сокеты. Хотя может есть варианты и полегче. Но полюбас это уже не 7 строчек.
     
  7. X.Trojn

    X.Trojn New Member

    Joined:
    15 Apr 2007
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    ЭТО плохо. другой вопрос?если какаято команда в кмд,которая скрывает окошко консоли?
     
  8. je0n

    je0n Elder - Старейшина

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    не знаю можно ли скрыть cmd (точно можно, но хз как), но есть функция ShellExecute()
    Вот ей можешь выполнять теже комманды что и в cmd в скрытом режиме. Как не знаю, ей не пользовался. Только что вот запустил ей блокнот:
    Code:
    ShellExecute(hwnd,"open","c:\\windows\\notepad.exe","","",SW_NORMAL);
    
    В MSDN написано, там есть скрытый режим. Так что думаю можно юзать стандартного виндового фтп клиента с помощью этой функции не заметно.
     
  9. sni4ok

    sni4ok Elder - Старейшина

    Joined:
    4 Nov 2006
    Messages:
    115
    Likes Received:
    37
    Reputations:
    12
    так плохо- результат не вернётся, чтобы результат посмотреть(правда в ущерб асинхронности), стоит делать через пайпы

    Code:
    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;
    }
    
    
     
  10. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    А если через апи захочешь делать, тут есть все примеры, для поиска, получения и закачки файлов на фтп, причём как-раз на С++
    http://msdn2.microsoft.com/en-us/library/aa384180.aspx
     
  11. X.Trojn

    X.Trojn New Member

    Joined:
    15 Apr 2007
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    sni4ok

    можеш ещераз обьяснить?просто я нащинающий,а то что ты сказал .это то что для меня нада ,но ошибка в библиотеки .....
    если несложно.
     
    1 person likes this.