2012年9月6日木曜日

batでファイルの削除と, テスト用ダミーファイルの作成

bakファイルをばんばん作るようになったので, 今度は作りすぎたファイルを削除する.batと, その動作をテストする用のダミーファイルを作る.batを, FOR文を用いて作成する.

まずは削除.bat本体


for /f  "skip="任意の整数"" %%"変数名" in ('dir/b /O-D "対象ファイル名"') do del %%"変数名"


削除の命令の本体は

del %%"変数名"

指定した名称のファイルを削除するコマンド
この %%"変数名" をFOR文の中で指定して, 繰り返し処理を行い削除を進める.

/f→ ファイル解析オプション. ファイルを扱うときに.

"skip="任意の整数""→ "任意の整数"で指定した数だけ処理をスキップする. すなわちforでまわすリストの先頭から"任意の整数"の数のファイルは削除しない, となる.

 %%"変数名"→ 実行するコマンド内で用いる変数. 

in ('dir/b /O-D "対象ファイル名"')→変数に入れる値. 今回はファイル名. オプションいろいろ.

  dir/b 対象ディレクトリ. 今回はこの.batのあるディレクトリ.

  /O-D ファイルの並び. 「D」が日付を示し, 「-」が降順を示す. すなわち, 新しい順に並ぶ. skipと合わせて, 新しい"任意の整数"件のファイルを残して削除する, となる.

  "対象ファイル名"→そのまま, 削除対象となるファイル. 「?」をワイルドカードとして使うことで特定のルールで作られたファイル名をまとめて対象に含むことが出来る.
(ex> 対象ファイル名 = log????.log とすれば, log0904.log,log0905.log,log0906.logと順に作成したファイルをまとめて対象に取れる.)


削除.batを作ったら, それをテストしたいところ. しかし一々メモ帳を開いてファイルを作ったり, コピーからのリネームで量産するのも芸がない.
そこで折角のfor文を用いてのダミーファイル量産計画.


for /L %%"変数名" in ("初期値","増加値","限界値") do TYPE NUL> "ファイル名"

ただループをまわすだけならこれでOK.
/L→Iではない. ただループをまわすオプション?
in ("初期値","増加値","限界値")→"変数名"に入る値. 当然数値. java等でよく見るfor文に近い内容. "初期値"から始まり, "限界値"まで, "増加値"ずつ増加していく. なお"限界値"以下である間回るので, "限界値"は含まれる.

TYPE NUL> "ファイル名"→ファイルの作成. 中身はこのままだと当然なし. ファイル名に%%"変数名"を用いることで, ファイル名を動的に変更できる.

これで量産可能. ループ中に桁がずれたときなどには注意.
(ex> …, log098.log, log099.log,log0910.logといった感じにファイル名がずれてしまう. 桁数ごとにループを作るのが無難)





…最近javaしてないなぁ…(・ω・`)

0 件のコメント:

コメントを投稿

AWS CDKで立てたEC2インスタンスのTimeZoneとかいじりたかった話

EC2を立てることはできたけど、立てたインスタンスは UTCのままだし設定ファイルとかいちいちscpしてくるのはダルい。 当初UserDataでなんとかしようとしたものの、「書く量がヤバいしメンテしにくい」と悩んでいたところ見かけたのが  AWS::CloudFormation:...