ファイル名やフォルダ名に使えない文字を削除する

Windows にはファイル名やフォルダ名に使えない文字(\ / : * ? ” < > | など)を削除する PathCleanupSpec という関数が用意されています。

具体的には次のように使います。

#pragma comment(lib,"shell32")
#include <shlobj.h>
...
TCHAR szFileName[MAX_PATH]
lstrcpy(szFileName, TEXT("test?name.txt"));
PathCleanupSpec(NULL, szFileName);
OutputDebugString(szFileName); // "testname.txt" が出力される

例えば「test?name.txt」というファイル名は、ファイル名に使えない”?”を含んでいますので「testname.txt」となります。

PathCleanupSpec 関数の第一引数には、ファイルやフォルダへのフルパスを指定することもできます。
指定した場合は、そのドライブが長いファイル名に対応しているかどうかを判別し、対応していない場合は、第二引数の名前は 8.3 形式に切り捨てられるようです。
最近のドライブで長いファイル名に対応していないものはあまりないかもしれません。


スポンサーリンク
広告1
広告1

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
広告1