数値特化のリネームソフト、ZeroSuper ver.2.1.0公開。

 複数の数値に対応したゼロサプライ(ゼロパディング、ゼロフィル、ゼロ埋めとも)、ゼロサプレス、全角の英数字と一部記号の半角変換を行う、数値特化のリネームソフト「ZeroSuper」を更新。

 ZeroSuperがどんなものかは、以前書いた説明を見よう!

 ver.2.1.0ではコマンドラインオプションに対応。バッチ等から呼び出せば、ウィンドウを表示せずに処理することが可能になった。
 詳しい説明はReadme読んでもらうとして、例をあげると、ZeroSuper.exe /M2 "001.txt" "2.txt"とか、対象パスのリストを作っといてZeroSuper.exe /M2 /L "TargetList.txt"とかやればリネームされる。簡単。
 パス指定はワイルドカードも使えるので、通常のGUI操作より便利なこともあるかもだ。

 ただし注意がいくつか。
 まず、無効なパスは無視されるということ。/L "存在しないファイル" "001.txt"とした時、ZSerは001.txtをパスリストと認識してしまう。あとパスリストの文字コード(UTF-16)が間違っていると、無効なパスとしてすべて無視されるので、これも注意。
 それと、スイッチ(/から始まるやつ)は必ずパスより先に書くこと。パスより後だと、なんか読み取れんかった。

LORD PLAIN > software > ZeroSuper


[PR]
by LordNoesis | 2015-09-10 20:12 | テクノロジ | Trackback | Comments(0)

数値特化のリネームソフト、ZeroSuper ver.2.0.0公開。

 複数の数値に対応したゼロサプライ(ゼロパディング、ゼロフィル、ゼロ埋めとも)、ゼロサプレス、全角の英数字と一部記号の半角変換を行う、数値特化のリネームソフト「ZeroSuper」を2年ぶりに更新!

 そもそもZeroSuperってなんぞや?というと、ファイル/フォルダ名に含まれる複数の数値(半角数字がひとつ以上連続したもの)を比較し、ゼロサプライするソフト。数値は出現順にIDが割り当てられ、すべての対象ファイル/フォルダ名の同一IDの数値と比較され、ゼロサプライされる。
 例えば、[2015-06-05]と[平成27年6月5日]をゼロサプライすると、後者が[平成0027年06月05日]になる。ゼロサプレス→ゼロサプライすると、前者が[2015-6-5]になる。

 今はどうだか知らないが、開発当時は複数の数値に対応しているだけでも珍しかった。

 今回リリースされたver.2.0.0と、ver.1.1.0との違いは以下の通り。

  • Unicodeに対応
  • 実行ログをウィンドウに表示するように
  • 設定ツールを本体機能として取り込み
  • フォルダの再帰処理に対応(フォルダ自体でなく、フォルダ内のファイルをリネーム対象に)
  • 数値の出現順(ID)を無視した処理に対応(すべての数値を比較したゼロサプライに対応)
  • 完了時の通知に対応(ダイアログ or バルーン)
  • 実行ログの保存方法の変更に対応(出力しない or 毎回別のファイルに出力 or ひとつのファイルに上書き)

 AHKでいちから作り直したもんだから、まだバグが含まれている可能性もあるので、とにかく自己責任で。

c0031643_1923367.png

c0031643_19235862.png

LORD PLAIN > software > ZeroSuper


[PR]
by LordNoesis | 2015-06-05 18:53 | テクノロジ | Trackback | Comments(0)

AutoHotKey_Lで、引数を動作中のソフトに渡すツール作った。ver.2.1.0

 S2WAは、あらかじめAppListを用意しておき、リスト内のソフトが起動済みならそのソフトに、そうでなければリストの一番上のソフトに、自身が受け取った引数を丸投げするツール。
 例えばいくつかのブラウザを使い分けている環境で、HTTPなどをS2WAに関連付けておけば、リンクを踏んだ時起動済みのブラウザで開かれるため、無駄にブラウザを起動せずに済む。

 ver.2.1.0では、OperaNext15が妙なディレクトリ構成なので、それに対応すべくAppListで正規表現を使えるようにした。

; ////////////////////////////////////////////////////////////////////////////////
;
; S2WA.ahk ver.2.1.0
;
; ////////////////////////////////////////////////////////////////////////////////

  FileEncoding, CP1200

  IfNotExist, %A_ScriptDir%\AppList.txt
  {
    MsgBox, %A_ScriptDir%\AppList.txt が存在しません!
    ExitApp
  }

  for process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process")
    if process.ExecutablePath
      ProcessList .= process.ExecutablePath "`n"

  TrgExe := ""
  Loop, Read, %A_ScriptDir%\AppList.txt
  {
    if !A_LoopReadLine
      continue
    
    StringLeft, CharBuf, A_LoopReadLine, 1
    if ("*" == CharBuf)
      StringTrimLeft, SearchExe, A_LoopReadLine, 1
    else {
      StringReplace, SearchExe, A_LoopReadLine, \, \\, All
      StringReplace, SearchExe, SearchExe, ., \., All
      StringReplace, SearchExe, SearchExe, [, \[, All
      StringReplace, SearchExe, SearchExe, ], \], All
      StringReplace, SearchExe, SearchExe, +, \+, All
      StringReplace, SearchExe, SearchExe, {, \{, All
      StringReplace, SearchExe, SearchExe, }, \}, All
      StringReplace, SearchExe, SearchExe, ^, \^, All
      StringReplace, SearchExe, SearchExe, $, \$, All
      StringReplace, SearchExe, SearchExe, (, \(, All
      StringReplace, SearchExe, SearchExe, ), \), All
    }
    
    if RegExMatch(ProcessList, "im`n)^(" SearchExe ")$", $) {
      MsgBox, %$1%
      TrgExe := $1
      break
    }
  }

  If !TrgExe
    FileReadLine, TrgExe, %A_ScriptDir%\AppList.txt, 1

  Loop, %0%
  {
    CmdlineBuf := %A_Index%
    Run, %TrgExe% "%CmdlineBuf%"
    Sleep, 1000
  }

 使用するには、スクリプトと同じディレクトリにAppList.txtを用意し、S2WAを呼び出すだけ。S2WAはAppListを上から順に起動済みプロセスと照合し、いずれもHitしなければ一番上のソフトを起動する。

 AppListの仕様は以下の通り。

  • 文字コードはUnicode(UTF-16LE)。
  • 1行につきひとつのフルパス。
  • 行が*から始まった場合、その行は正規表現とみなされる。

 ただし、1行目は正規表現であってはならない。OperaNext15を最優先にしたいなら、以下のように記述する。

R:\Opera Next\launcher.exe
*R:\\Opera Next\\.*\\opera\.exe

 WindowsVista以降、httpなどのプロトコルへの関連付けは面倒になっている。詳しくはver.2.0.0の記事参照。


[PR]
by lordnoesis | 2013-06-20 17:57 | Trackback | Comments(0)

AutoHotKey_Lで、関連付けを動作中のアプリケーションで開くツール作った。

 動作中のプロセスからリストにあるものを探し出して引数(コマンドラインオプション)を転送するS2WAを、改めてAHKで作り直してみた。
 これによってリストがUnicodeになり、また、250文字を超える引数に対応した。

; ////////////////////////////////////////////////////////////////////////////////
;
; S2WA.ahk ver.2.0.0
;
; ////////////////////////////////////////////////////////////////////////////////

  FileEncoding, CP1200

  IfNotExist, %A_ScriptDir%\AppList.txt
  {
    MsgBox, %A_ScriptDir%\AppList.txt が存在しません!
    ExitApp
  }

  for process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process")
    ProcessList := ProcessList "`n" process.ExecutablePath

  TrgExe := ""
  Loop, Read, %A_ScriptDir%\AppList.txt
  {
    if ("" == A_LoopReadLine)
      continue
    StringLower, SearchExe, A_LoopReadLine
    Loop, Parse, ProcessList, `n, `r" "
    {
      StringLower, TipProcess, A_LoopField
      if (SearchExe == TipProcess) {
        TrgExe := TipProcess
        break
      }
    }
    if ("" != TrgExe)
      break
  }

  If ("" == TrgExe)
    FileReadLine, TrgExe, %A_ScriptDir%\AppList.txt, 1

  Loop, %0%
  {
    CmdlineBuf := %A_Index%
    Run, %TrgExe% "%CmdlineBuf%"
    Sleep, 1000
  }

 これをAhk2ExeでExe化し、関連付けすれば便利。例えば.htmlやHTTPに関連付け、リストにブラウザを列挙することで、起動済みのブラウザや、軽量なブラウザで開けるようになる。例えばっていうか、それしか思いつかないので、他に便利な使い道があったら教えてください(お。

 なお、Windows7でHTTPなどのプロトコルを関連付けするにはレジストリをいじる必要がある。

Windows Vista 既定のプログラム 関連付け レジストリ とかの話



REGファイルはじめました。
[PR]
by lordnoesis | 2012-06-09 19:19 | テクノロジ | Trackback | Comments(0)

関連付けを、動作中のアプリケーションで開くツール作った。

 私は複数のブラウザを使い分けててですね。最近は、web閲覧はOpera、2ch専ブラFx、関連付けはDonutLってところか。Chromeは起動速度が微妙になってきたのと、これまで担当していたフィードリーダー用途も、Operaの高速化によってGoogleリーダーでよくね?となったことから二軍落ち。あと近年、Donut系の軽さ(速度ではない)を再評価しつつあったり。

 それぞれ得意な分野を任せた配置なのだけど、ブラウザ起動していない時ならともかく、すでに他のブラウザが起動しているのなら、関連付けはそのブラウザで開いた方がリソース的にいいよなーと思い至って。で、作ったのがこのツール。

LORD PLAIN:Software>s2wa

 詳しく説明すると、パスを引数にしてこのツールを呼び出すと、現在動作中のプロセスと、あらかじめ登録しておいたリストを照合して、適合したアプリケーションを引数つけて呼び出すという。
 ブラウザ登録して、HTMLやインターネットショートカット、URL:HTTPあたりに関連付けるとすっげー便利。もうこれでIMなんかでURL送られてきた時に、考えなしにクリックしてブラウザの起動処理やマスターパスワード入力に煩わされることはないね!
 なお、ひとつもHITしない場合はリスト最上位のアプリケーションを呼び出すので、起動が早くて手間がかからないのを1位にしておくとよい(私の場合Donut)。

 s2waは同じディレクトリのリストを読み込むだけなので、もし複数のファイルタイプで使いたいのなら、s2waのディレクトリを複数用意する必要がある。
 リスト登録はブラウザに限定されてないけども、ブラウザ以外に「ひとつの拡張子に対応した複数のアプリケーション(どれもほぼ違いはない)が存在する」状況ってないよなー。しいていうならビューアー系か。


[PR]
by lordnoesis | 2011-01-03 06:37 | テクノロジ | Trackback(1) | Comments(0)

CheckOverlapが便利 & COの補助ツール作った。

 CheckOverlapというツールがあるんだが、これが神いわゆる(ry。
 簡単にいうと、圧縮ファイルを中身で比較してくれるツール。しかも解凍してないっぽい(CRC見てる?)ので凄い早い。これのおかげで、考えなしに作った圧縮ファイルの整理が格段に楽になった。もう「画像1枚更新しただけのバックアップ」とかも見逃さないぜ!(考えなしってレベルじゃねーぞ。
 いやぁこれに関しては、編集せずとも全ファイル更新するCardWirthEditorの仕様に問題があると(ry

 で、そんな神ツールだけども気になる点がふたつ。ひとつは検索ディレクトリの追加が面倒な点。設定から追加しようとすると、Windows標準のあのフォルダ選択ダイアログで、いちいちツリーを辿らねばならん。が、幸いにもフォルダ設定はDirectory.txtに平文で記録されているので、そこに直接フルパスを追記すればいいじゃない!っていう補助ツールを作った。

LORD PLAIN:Software>COExec

 こいつに引数でパスを与えると、Directory.txtに追記して、COを起動する。検索ディレクトリを文字順でソートする機能もあるよ!

 もうひとつ気になるのは、ディレクトリ名の最後が半角スペースだと固まるバグ。[hoge/]は大丈夫だけど[hoge /]はダメ。まあこれは外部からじゃどうしようもないし、リネームすれば問題ないからいいやっていう(ぐへー。


[PR]
by lordnoesis | 2011-01-02 19:30 | テクノロジ | Trackback | Comments(0)

複数のファイル名に含まれる複数の数値の桁を揃えるツール作った!

 WindowsXP以降のエクスプローラでは、ファイル名に含まれる数値の扱いがそれまでとは変わったというのは、今さら話題にするまでもないと思う。それまでは文字列として単純にソートするだけだったが、XP以降では連続した数字は「数値」として扱うようになった。「10」と「2」の場合、以前は「1」と「2」の比較だったが、XP以降では「10」と「2」の比較である。まあ私はそういう数値ソートはOFF、いわゆる2k風にしてあるが。

 で、数値ソートをしないとなると「2」ではなく「02」にしたいと思うわけだ。1から100までのファイルが存在するなら「002」にしたいし、1000まで存在するなら「0002」にしたい。いわゆるゼロサプライ(ゼロパディング、ゼロフィル、ゼロ埋めとも呼ばれるなにか)である。

 こういう要望は私に限らず存在するので、すでにそれを一括で行うソフトが存在する。つまり対象となるファイル群に含まれるもっとも長い数値を調べ、他の数値をその桁に合わせるソフトである。が、私の調べた限り、それらは「複数の数値」に対応していない。

 複数の数値とはどういうことか。一例をあげれば「001-01」とか「2010-04-02」とかである。数字のみが連続したものを数値と捉えるならば、前述の文字列は数値がふたつ以上含まれていることになる。既存のソフトは数値が複数個あることを考慮していないようで、エラーになったり、いずれかひとつの塊しか揃えられなかったりする。

LORD PLAIN:Software/おまけ。 -- 数値特化リネームツール「ZeroSuper」

 そこでこの「ZeroSuper」の出番! こいつは複数の数値にばっちり対応。しかもゼロサプライだけでなく、ゼロサプレス(ゼロサプライとは逆に、数値先頭に存在する無駄っぽい0をなくす処理)もできる。ゼロサプレスやったあとでゼロサプライとかもできちゃう。さらにオマケとして、全角英数字(カナ含まず)を半角にしたりもできる! あら便利! どーですかお(ry

 まー先人が作ってないっぽいあたり、かなりニッチな要件な気もするが、ビビっときた人は使ってみればいいんじゃないかなぁ! 自己責任で


[PR]
by lordnoesis | 2010-04-02 12:01 | テクノロジ | Trackback | Comments(0)

自動化=トラブルも自動化。これ真理。

 しまったここにジャンクション作っておいたのすっかり忘れてたorz

 いや拙作の「重複ファイルハードリンク化支援ツール」こと「d2b.exe」なんですがね。あるフォルダと、そのフォルダに対するジャンクションの中身が重複ファイルと判断されてしまうと、どちらか一方の中身を消した時点でもう一方も消えるわけで、ハードリンク作るどころか消えちまうぞ!っていう。

 まあd2b.exeは、与えられた重複ファイルリストを元にバッチ作るだけのものなんで、原因はそういう重複ファイルリストを利用したことの方なんですが。ううう、ジャンクションに対応している(ジャンクションは無視してくれる)重複検索ソフトを使っとくんだったぁー!

 バージョンアップして誤削除を回避するようにした。結果として安定性も向上していうことなし。


[PR]
by lordnoesis | 2009-11-13 12:31 | テクノロジ | Trackback | Comments(0)

アウトラインテキストを読みこんで、ノードをPukiwikiのページに分割するツール

 ……うーむ。かつて「あうとら」で書いた情報をpukiwikiに移植すべく、「アウトラインテキスト(Wz Editorの階層付きテキスト形式)を読みこんで、ノードをPukiwikiのページに分割するツール」を作ってみたのだが。びっみょー……。

 当然、Pukiwikiで使うことを前提としていなかったテキストなので、ノードごとに分割するだけじゃまともに使えないわけで。手直しするくらいなら、1ページずつリメイクした方がいいよなーっていう。wikiを新たに開設する時なら使えるかもしれんが、既存のwikiにページ追加する用途には向かんなこれは……。

 まあ元々、急な余暇をつぶすために手をつけた作業だし、作るの面白かったから、目的は果たしたといえなくはない。


[PR]
by lordnoesis | 2009-09-28 23:12 | テクノロジ | Trackback | Comments(0)

L.P.Utter ver.2.00完成。

 や、これからvectorに送るので、公開は一週間後ですが。LPに上げてもいいんだが……。

 実のところ、4月頃にはもう完成してたのだが。アイコンとreadme書くのが面倒で放置してた(えぇぇぇぇ。

 いやいや放置というと語弊があるな、3ヶ月間もの入念なRCテスト(ry


 2.00からは、使用方法が少し変化。さすがはメジャーバージョンアップだぜ!(お。

 起動すると小さなウィンドウが出てくる。しかるのち、装飾キーを2連打するか、そのウィンドウをクリックすると日時が出力される。前者は即座に出力されるので、準備が整ってから2連打。後者はカウントダウン後に出力されるので、素早くフォーカスを移動しよう!
 引数の仕様は特に変わってない。ウェイト指定がカウント指定になったくらい。

 ……まあようするに、ほとんど変わってないな。


[PR]
by lordnoesis | 2007-07-22 19:01 | テクノロジ | Trackback | Comments(0)
ブログトップ | ファンになる