VBScriptで数値を0で埋めて表示してみる

| 2011年10月12日水曜日


VBScriptでは0埋めでフォーマットする関数は標準で用意されていないようだ。

こんな感じで書いて

Format("0000000000", 120)

0000000120

っと表示したかったけど楽にはできないみたい。

そこでちょっとしたものを書いてみた。

普通に0埋め用のフォーマットをする関数なら他でも紹介されていたので、ここではエラー処理などは無視して、関数にするほどもない、一箇所だけそんな0埋めでフォーマットをしたい人向けにした。

内容は単純で、

  • 表示したい桁 - 数値の桁
  • その結果の数値をSpace関数で数値分の空白文字にする
  • 空白文字をReplace関数を使って指定した文字に置き換える
っというのを一行でしているだけ。
VBScriptでちょっとしたバッチのために、だらだらと関数を書いたり、共通関数を外だしするのもなんだし。
小さいバッチはあっさりしてた方がメンテナンスも楽だからね。
  1. 'VBScriptで数値を0で埋めて表示する  
  2.   
  3. '表示したい桁数  
  4. length = 10  
  5.   
  6. '表示する数値  
  7. value = 120  
  8.   
  9. '0で埋める  
  10. character = 0  
  11.   
  12. '10桁表示で120を表し、空いている部分は0で埋める  
  13. result = Replace(Space(length - Len(value)) & value, Space(1), character)  
  14.   
  15. WScript.Echo result ' => 0000000120  

Windowsでvimのopsplorer.vimを使ってみた。

| 2011年10月10日月曜日


vimをIDEっぽくできないかと探していると、opsplorer.vimなるものを見つけた。

  1. vim onlineからダウンロード。 リンク:opsplorer.vim
  2. pluginフォルダにopsplorer.vimを配置。(KaoriYaのvimを使っているなら runtime/pluginの下)
  3. vimを起動して :opsplorer
見つけたのはいいが、使ってみるも動かない。

どうやら、Windowsには対応していないようだ。
紹介サイトのスクリーンショットがMacばっかりだったからなんとなく察したけど。
他にも困っている人がいるだろうとさらに調べると対応版を作ってくれている人がいた。


mattn
opsplorer.vimをwin32でも動くようにしてみた。便利かどうかは知らない。http://gist.github.com/333696


十分に便利でありがたいです。
githubで公開されているようなのでダウンロードして、pluginフォルダにおいてみる。

起動するとうまく動いてくれたようだ。

が!

ここでちょっとした問題が・・・
フォルダの展開やファイルの選択系はWindowsに対応してくれたようだけど、コマンド系(ファイルのコピーやリネーム、削除)ができない。

ソースを見てみると、ファイルを削除しているであろう関数FileDelete()の中で呼び出してるコマンドが"rm"だった・・・
これはWindowsでは動かんだろうな。

system()関数で呼び出されるのは、たぶん、CMDのコマンドだろうからここは"del"でないといけないはず。

PowerShellを常時使ってるから、このあたりの機能はなくてもいいんだけど、連休中にやることもなかったので、vimマクロはほとんど触ったことがないけどいじってみた。

詳細は一番下にリンクを張ったコードをダウンロードして見てもらえばいいけど、外部コマンドを呼んでいるっぽいところを変更しただけ。

let i=system("rm -f ".filename)


if has("win32")
let filename = substitute(filename,".*[\\/]",'','')
let i=system("del /Q ".filename)
else
let i=system("rm -f ".filename)
endif

Windowsならフォルダの区切り文字を整理して、"del"コマンドを呼ぶ。
削除、コピー、リネーム、移動を変更してみた。
大体動いているようだけど、なぜか移動だけは動かなかった。
わかる人、助けて下さいm(_ _)m

他にも困ってる人がいると思うので変更したソースを公開する。
本来はgithubを使ったほうがいいんだろうけど、アカウントを持ってないので今回はやめておく。