ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|
Поиск файлов и копирование их C++\Asm |

09.10.2009, 08:12
|
|
Новичок
Регистрация: 08.10.2009
Сообщений: 5
Провел на форуме: 5114
Репутация:
0
|
|
Поиск файлов и копирование их C++\Asm
в общем я ламерюга пока что=) в C++ 2 дня
мне надо чтобы был поиск *.txt файлов в C:\123\ и копирование этих найденных файлов в D:\123\
кто может напишите скрипт этого буду очень благодарен))
заранее спасибо)
собираюсь asm изучать дак вот если у кого есть на asm то что я прошу на c++ то выкладывайте)
ах да и еще желательно разжевать все =)
Последний раз редактировалось TheThief; 09.10.2009 в 08:24..
|
|
|

09.10.2009, 08:38
|
|
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
Провел на форуме: 3718311
Репутация:
1118
|
|
кто может напишите скрипт
Избався от слова СКРИПТ или учи PHP|Perl и т.д.
Код:
SHFILEOPSTRUCT s;
s.wFunc = FO_COPY;
s.pFrom = "c:\\123\\*.txt\0";
s.pTo = "d:\\123";
SHFileOperation(&s);
|
|
|

09.10.2009, 09:16
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
а я садист и у меня кода меньше ))) :-P
system("@for %1 in (\"C:\\123\\*.txt\") do @copy \"%1\" \"D:\\123\\\">>nul");
|
|
|

09.10.2009, 11:34
|
|
Новичок
Регистрация: 08.10.2009
Сообщений: 5
Провел на форуме: 5114
Репутация:
0
|
|
а если надо искать на всех жестких дисках? эт сработает?=) мне ведь надо не просто копировать из 123\*.txt а чтобы копировались из 123\1 и 123\2 123\3 и т.д. ушел пробовать)
|
|
|

09.10.2009, 11:46
|
|
Новичок
Регистрация: 08.10.2009
Сообщений: 5
Провел на форуме: 5114
Репутация:
0
|
|
slesh, работает но то что в папке C:\123\123 не копирует) и еще там запускается черное окошко это чо cmd чтоли? бред;d батч ... >_<
Последний раз редактировалось TheThief; 09.10.2009 в 11:50..
|
|
|

09.10.2009, 11:55
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
ну тогда юзай апинки FindFirstFile FindNextFile и если попадается каталог то рекурсивно запускай данную функцию
|
|
|

09.10.2009, 12:31
|
|
Новичок
Регистрация: 08.10.2009
Сообщений: 5
Провел на форуме: 5114
Репутация:
0
|
|
The Thief
ах да и еще желательно разжевать все =)
поподробней насчет FindFirstFile FindNextFile
|
|
|

09.10.2009, 12:48
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
PHP код:
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <strsafe.h>
void DisplayErrorBox(LPTSTR lpszFunction);
int _tmain(int argc, TCHAR *argv[])
{
WIN32_FIND_DATA ffd;
LARGE_INTEGER filesize;
TCHAR szDir[MAX_PATH];
size_t length_of_arg;
HANDLE hFind = INVALID_HANDLE_VALUE;
DWORD dwError=0;
// If the directory is not specified as a command-line argument,
// print usage.
if(argc != 2)
{
_tprintf(TEXT("\nUsage: %s <directory name>\n"), argv[0]);
return (-1);
}
// Check that the input path plus 3 is not longer than MAX_PATH.
// Three characters are for the "\*" plus NULL appended below.
StringCchLength(argv[1], MAX_PATH, &length_of_arg);
if (length_of_arg > (MAX_PATH - 3))
{
_tprintf(TEXT("\nDirectory path is too long.\n"));
return (-1);
}
_tprintf(TEXT("\nTarget directory is %s\n\n"), argv[1]);
// Prepare string for use with FindFile functions. First, copy the
// string to a buffer, then append '\*' to the directory name.
StringCchCopy(szDir, MAX_PATH, argv[1]);
StringCchCat(szDir, MAX_PATH, TEXT("\\*"));
// Find the first file in the directory.
hFind = FindFirstFile(szDir, &ffd);
if (INVALID_HANDLE_VALUE == hFind)
{
DisplayErrorBox(TEXT("FindFirstFile"));
return dwError;
}
// List all the files in the directory with some info about them.
do
{
if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
_tprintf(TEXT(" %s <DIR>\n"), ffd.cFileName);
}
else
{
filesize.LowPart = ffd.nFileSizeLow;
filesize.HighPart = ffd.nFileSizeHigh;
_tprintf(TEXT(" %s %ld bytes\n"), ffd.cFileName, filesize.QuadPart);
}
}
while (FindNextFile(hFind, &ffd) != 0);
dwError = GetLastError();
if (dwError != ERROR_NO_MORE_FILES)
{
DisplayErrorBox(TEXT("FindFirstFile"));
}
FindClose(hFind);
return dwError;
}
void DisplayErrorBox(LPTSTR lpszFunction)
{
// Retrieve the system error message for the last-error code
LPVOID lpMsgBuf;
LPVOID lpDisplayBuf;
DWORD dw = GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL );
// Display the error message and clean up
lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT,
(lstrlen((LPCTSTR)lpMsgBuf)+lstrlen((LPCTSTR)lpszFunction)+40)*sizeof(TCHAR));
StringCchPrintf((LPTSTR)lpDisplayBuf,
LocalSize(lpDisplayBuf) / sizeof(TCHAR),
TEXT("%s failed with error %d: %s"),
lpszFunction, dw, lpMsgBuf);
MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK);
LocalFree(lpMsgBuf);
LocalFree(lpDisplayBuf);
}
Пример с мсдн
1. Ищеш первый попавшийся файл\дирректорию
hFind = FindFirstFile(szDir, &ffd);
2. Проверяеш Что это
ffd.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY дирректория или нет
3. Если нет то проверяеш удовлетворяет ли он условиям поиска
4. Далее если удовлетворяет то делаеш с ним че тебе надо
5. Далее вызываеш
while (FindNextFile(hFind, &ffd) != 0)
Тут так же как и выше проверяеш что это и условия поиска.
6. Если же это дирректория то вызываеш все это дело еще раз только с имянем той дирректории которую ты нашел.
Тут на форуме где то было. Кто то писал на С++ прогу которая тырит историю QIP там метод поиска такого какого тебе надо в подробностях.
Последний раз редактировалось St0nX; 09.10.2009 в 13:26..
|
|
|

10.10.2009, 12:24
|
|
Новичок
Регистрация: 08.10.2009
Сообщений: 5
Провел на форуме: 5114
Репутация:
0
|
|
тут была шутка если чо;D
Последний раз редактировалось TheThief; 11.10.2009 в 10:32..
|
|
|

10.10.2009, 12:59
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
в бан бы тебя
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|