Использование функции Windows CopyFile для копирования всех файлов с определенным форматом имени - PullRequest
0 голосов
/ 12 июня 2010

Hello!Я обновляю код C, который копирует файлы с определенным именем.в основном у меня есть каталог с кучей файлов, названных так:

AAAAA.1.XYZ
AAAAA.2.ZYX
AAAAA.3.YZX
BBBBB.1.XYZ
BBBBB.2.ZYX

Теперь, в старом коде, они просто использовали вызов ShellExecute и использовали xcopy.exe.чтобы получить все файлы, начиная с AAAAA, они просто дали xcopy имя файла как AAAAA. * и знали, что нужно скопировать все файлы, начиная с AAAAA.Теперь я пытаюсь заставить его скопировать без использования командной строки, и я столкнулся с проблемой.Я надеялся, что CopyFile будет достаточно умен, чтобы обрабатывать AAAAA. * Как файл, который нужно скопировать, но он совсем не делает то, что делал xcopy.Итак, есть идеи о том, как это сделать без внешнего вызова xcopy.exe?

Ответы [ 4 ]

3 голосов
/ 12 июня 2010

Проверьте это как отправную точку

http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx

или даже лучше этот полный пример

http://msdn.microsoft.com/en-us/library/aa365200(v=VS.85).aspx

2 голосов
/ 12 июня 2010

Вы также можете использовать SHFileOperation или IFileOperation (последний доступен только в Vista и выше, но теперь это рекомендуемый способ в соответствии с MSDN). SHFileOperation поддерживает подстановочные знаки и отображает прогресс по умолчанию, но есть также флаг для тихой операции.

Проверьте следующие ссылки MSDN для получения дополнительной информации:

http://msdn.microsoft.com/en-us/library/bb762164(v=VS.85).aspx

http://msdn.microsoft.com/en-us/library/bb775771(v=VS.85).aspx

1 голос
/ 12 июня 2010

Есть много способов сделать это.Возможно, я бы использовал цикл FindFirstFile () / FindNextFile ().

Однако, есть ли причина, по которой вы все еще не можете использовать xcopy?Вы можете запустить его с помощью CreateProcess ().Это не красиво, но это работает.

1 голос
/ 12 июня 2010

В основном вам нужно написать код для воспроизведения функциональности в xcopy. Для этого необходимо создать список файлов, открыв путь и повторив его. Проверьте каждую найденную запись по вашему шаблону и оставьте только те, которые соответствуют. Затем переберите этот список с помощью CopyFile.

См. Следующий набор функций, которые могут помочь вам создать список файлов:

http://en.wikipedia.org/wiki/Dirent.h

Возможно, будет проще продолжать использовать xcopy, если у вас нет особых причин не делать этого.

...