こういうことでしょうか?ファイルがなければどうせコピーで失敗するので、存在確認は省きました。
char szFiles[] = "abc.dat,xyz.dat"; // コピーするファイル名一覧
char* lpszToken;
// フォルダパスの取得
DWORD dwValueType, cbPathName;
char szPathName[MAX_PATH];
HKEY hKey;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\HRPS\\BPSS", 0, KEY_READ, &hKey);
RegQueryValueEx(hKey, "PathName", NULL, &dwValueType, (LPBYTE)szPathName, &cbPathName);
RegCloseKey(hKey);
lpszToken = strtok(szFiles, ","); // カンマ区切りでファイル名を抽出
while (lpszToken)
{ // 各ファイル毎にコピー
// 新旧ファイルパスの生成
char szFilePath[MAX_PATH];
char szNewFilePath[MAX_PATH];
wsprintf(szFilePath, "%s\\%s", szPathName, lpszToken);
wsprintf(szNewFilePath, "%s\\%s", "c:\\ftproot", lpszToken);
// ファイルのコピー
if (!CopyFile(szFilePath, szNewFilePath, TRUE))
{ // エラーの場合
DWORD dwError = GetLastError();
switch (dwError) {
case ERROR_FILE_NOT_FOUND:
printf("\"%s\" not found\n", szFilePath);
break;
case ERROR_FILE_EXISTS:
printf("\"%s\" already exists\n", szFilePath);
break;
default:
printf("errorコード=%d\n", dwError);
}
}
lpszToken = strtok(NULL, ","); // 次のファイルの抽出
}
補足
聞きたいのですが // フォルダパスの取得 DWORD dwValueType, cbPathName; char szPathName[MAX_PATH]; HKEY hKey; RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\HRPS\\BPSS", 0, KEY_READ, &hKey); RegQueryValueEx(hKey, "PathName", NULL, &dwValueType, (LPBYTE)szPathName, &cbPathName); RegCloseKey(hKey); でレジストリにキーの値を取得できますがこの値を表示させたいなら printf("%s",szPathname)で 表示内容が「c:\program\HRPS」になりますか? そして連結したいときは strcat("szpathname",\\file.c)? strcat(c:\program\HRPS,\\file.c)だと自分で入力しないといけないのでどうやったらいいでしょうか><?」 strcat(szpathname,\\file.c)