プロが教えるわが家の防犯対策術!

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ファイルを見つけだし、ファイル名を変える何かいい方法があればご教授お願いいたします。

A 回答 (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 だとか ) も書いておいた方がいいかもしれません。(今回は関係ないみたいですが。)
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/08/19 21:15

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!