PDA

Просмотр полной версии : копирование папок (с++/с)


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() (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shellexecute.asp)
Вот ей можешь выполнять теже комманды что и в cmd в скрытом режиме. Как не знаю, ей не пользовался. Только что вот запустил ей блокнот:

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


В MSDN написано, там есть скрытый режим. Так что думаю можно юзать стандартного виндового фтп клиента с помощью этой функции не заметно.

sni4ok
23.04.2007, 17:36
тил ей блокнот:

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

X.Trojn
24.04.2007, 22:02
sni4ok

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