OmegaChart用ツール


ゼロサイズのファイルを削除する

なぜこんなものを作ったのか

OmegaChartで,スクリーニングなどにおいて「インデックスが配列の境界外です」というエラーが発生し,この原因が『データファイルにゼロサイズのものがある』ことが疑われる場合に毎度毎度ゼロサイズのデータファイルを探して削除するのが面倒だったからです。

構成

コマンドとバッチファイルで構成されます。

使い方

1.対象のフォルダ名に合わせて,バッチファイルを編集する。

バッチファイルの中身sweep.bat

SweepZeroFiles "C:\Program Files\Omega Chart\data"

pause

メモ:空白を含む場合,""で囲みます。

2.念のため対象のフォルダをバックアップする。

初めて使用する場合などは,バックアップしておくことをオススメします。

3.バッチファイルを実行する。

sweep.batをダブルクリックするなどして実行します。コマンドプロンプトウィンドウが開いてファイルの削除が実行されます。

4.結果を確認する。

[Dleted] C:\Program Files\Omega Chart\data\7608
[Dleted] C:\Program Files\Omega Chart\data\8080
File=3647, Dir=0 found.
File=7 deleted .

コマンドプロンプトに上記のようにレポートが表示されます。

意図しないファイルが削除されていないことなどを確認します。

使用上の注意

ツールの性質上,誤ったフォルダ名を指定するなどすることにより,OSの動作に関連するファイルなどを誤って削除してしまうことが起こりえます。

充分注意した上での慎重なご使用をお願いします。

使い方やこの注意がよく理解できない場合は,ご使用を控えていただきたいと思います。

基にしたもの

meiさんの,匣の向こう側というサイトのC# Tipsからほとんどそのままソースをいただいています。

http://www.ne.jp/asahi/nami/mei/index.html

動作環境

検証環境は,

Windows XP ProfessionalEditionSP2

.NET Framework1.1

です。

おそらくその他の環境でも動作すると思われますが,検証はおこなっておりません。

ダウンロード

名前 ファイル サイズ バージョン
コマンド SweepZeroFiles.exe 16kB 0.01
バッチ sweep.bat 1kB 0.01

任意のフォルダにダウンロードしてお使いください。

コマンドとバッチは同じフォルダに格納します。

ぶっちゃけ話

ぶっちゃけエクスプローラでファイルサイズ順に並び替えて削除してもそんなに手間ではありません^^

しかしながら,データファイルをダウンロードするたびに手作業で削除するのは面倒でして。

OmegaChart本体で対応できるならしてもらったほうがええです。例えば,以下は,OmegaChartのerror.logですが,データダウンロード中に記録されたログの数が,ゼロサイズのファイルと同数なので。エラーなり例外出たところは,データファイルを生成しなければ済むだけのことですから・・・

2005/03/16 16:08:13 : レコード数が異常です
at Zanetti.DataSource.Specialized.KenMilleDataSource.ImportFullData(BasicBrand br, Byte[] buf) in C:\zanetti\v1\KenMille.cs:line 39
at Zanetti.DataSource.FullDataSource.Process() in C:\zanetti\v1\DataSource.cs:line 160
2005/03/16 16:12:17 : 日付フォーマットが不正です。
at Zanetti.DataSource.Specialized.KenMilleDataSource.TestDateFormat(Byte[] buf, Int32 offset) in C:\zanetti\v1\KenMille.cs:line 112
at Zanetti.DataSource.Specialized.KenMilleDataSource.ImportFullData(BasicBrand br, Byte[] buf) in C:\zanetti\v1\KenMille.cs:line 50
at Zanetti.DataSource.FullDataSource.Process() in C:\zanetti\v1\DataSource.cs:line 160
2005/03/16 16:26:11 : 日付フォーマットが不正です。
at Zanetti.DataSource.Specialized.KenMilleDataSource.TestDateFormat(Byte[] buf, Int32 offset) in C:\zanetti\v1\KenMille.cs:line 112
at Zanetti.DataSource.Specialized.KenMilleDataSource.ImportFullData(BasicBrand br, Byte[] buf) in C:\zanetti\v1\KenMille.cs:line 50
at Zanetti.DataSource.FullDataSource.Process() in C:\zanetti\v1\DataSource.cs:line 160
2005/03/16 16:26:43 : リモート サーバーがエラーを返しました : (404) 見つかりません。
at System.Net.HttpWebRequest.CheckFinalStatus()
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.HttpWebRequest.GetResponse()
at Zanetti.Util.HttpDownload(String url) in C:\zanetti\v1\Util.cs:line 101
at Zanetti.DataSource.Specialized.KenMilleDataSource.DownloadFullData(BasicBrand br) in C:\zanetti\v1\KenMille.cs:line 22
at Zanetti.DataSource.FullDataSource.Process() in C:\zanetti\v1\DataSource.cs:line 159
2005/03/16 16:28:46 : レコード数が異常です
at Zanetti.DataSource.Specialized.KenMilleDataSource.ImportFullData(BasicBrand br, Byte[] buf) in C:\zanetti\v1\KenMille.cs:line 39
at Zanetti.DataSource.FullDataSource.Process() in C:\zanetti\v1\DataSource.cs:line 160
2005/03/16 16:32:43 : 日付フォーマットが不正です。
at Zanetti.DataSource.Specialized.KenMilleDataSource.TestDateFormat(Byte[] buf, Int32 offset) in C:\zanetti\v1\KenMille.cs:line 112
at Zanetti.DataSource.Specialized.KenMilleDataSource.ImportFullData(BasicBrand br, Byte[] buf) in C:\zanetti\v1\KenMille.cs:line 50
at Zanetti.DataSource.FullDataSource.Process() in C:\zanetti\v1\DataSource.cs:line 160
2005/03/16 16:37:17 : レコード数が異常です
at Zanetti.DataSource.Specialized.KenMilleDataSource.ImportFullData(BasicBrand br, Byte[] buf) in C:\zanetti\v1\KenMille.cs:line 39
at Zanetti.DataSource.FullDataSource.Process() in C:\zanetti\v1\DataSource.cs:line 160

これに関連して,「データファイルチェッカ」の実装も検討しています。

免責

このツールは自己責任でお使いください。