• ベストアンサー

実行ファイルのサブフォルダのファイル名変更で

h = FindFirstFile("bitmap\\*.txt", &fd); if(h == INVALID_HANDLE_VALUE){   MessageBox(NULL, "ファイルが見つかりませ    ん", "エラー", MB_OK | MB_ICONERROR | MB_RIGHT); return 1; } このようにして実行ファイルのサブフォルダにあるtxtファイルを見つけることはできるのですが、このサブフォルダにあるtxtファイルのファイル名を1に変更しようとMoveFile( fd.cFileName, filename )などとしてもファイル名が変更できません。サブフォルダではなく、、((h = FindFirstFile("*.txt", &fd)のように指定して、実行ファイルにあるtxtのファイル名は変更できます。この実行ファイルのサブフォルダにある任意のtxtファイルを見つけだし、ファイル名を変える何かいい方法があればご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

とりあえず、MoveFile で名前の変更ができないというのは、パスを指定していないからでしょう。 fd.cFileName には TEST.TXT のようなファイル名しか入っていませんので、カレントディレクトリから見て bitmap\XXX.TXT ではなく、カレントディレクトリの中の XXX.TXT のファイル名を変えようとしていることになります。 char strOld[MAX_PATH]; char strNew[MAX_PATH]; strcpy( strOld, "bitmap\\" ); strcat( strOld, fd.cFileName ); strcpy( strNew, "bitmap\\" ); strcat( strNew, "TEST.TXT" ); MoveFile( strOld, strNew ); のようにして、パスを指定してやればOKだと思います。 あと、ここは UNIX 系の OS の質問もありな場所なので、OS は何か ( Windows 何々とか ) 書いておきましょう。( Windows でも、API によっては OS のバージョンによって動作が異なったりすることもあるようですし。) それと、念のため、使用している開発ツール ( Microsoft の VC だとか ) も書いておいた方がいいかもしれません。(今回は関係ないみたいですが。)

noname#46712
質問者

お礼

tsukasa-12rさん。ありがとうございました。tsukasa-12rさんのとうりにしたらできました。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

フルパスで指定すれば問題ないような。

関連するQ&A