忍者ブログ

再帰フォルダ作成スクリプト(VBScript)の改良

2022年06月21日
前に書いた記事「デバッグログを出力するVBScript」で登場したフォルダ作成モジュールを改良したら思わぬ不具合が出てハマったお話。
※ 本文の「\」は半角の「¥」のことです。



そのモジュールmakeDirEX(Path)は、Pathで指定したフォルダを親フォルダから順に作る。
すでに作ってあればなにもしないという万能な処理。
フォルダ作成処理って、親フォルダがなかったり、すでに作られてたり
エラー要素が結構あるので、我ながら便利だと思う。
ただし、受け渡すパスを間違えるとやたら深いフォルダが作られる。。。

Pathで受け取った文字列を\でSplitして、要素の若い順にフォルダ有無を調べてなければ作る。NASのように\\で始まるPathは非対応だったけど、利便性のため改良することにした。

"\\"で始まるパスならNASと判断して、
パスから"\\"を除外して、basePath を"\\"に設定。
"\\"の次の文字から"\"区切りで順次フォルダ作成処理がされる。

当初、引数であるPathから"\\"を除外して処理していたが、
プロシージャの外に出ても"\\"が消えたままになってるし!!

引数は編集するな!が正解?


以下、ソース。
PR
つづきはこちら "再帰フォルダ作成スクリプト(VBScript)の改良"

指定したテキストファイルの文字列を置換して、別名保存(上書き)するVBScript

2022年06月18日
定期的な作業で、文字列を置換してコマンドを実行することが結構ある。

例えばログ取得。YYYYMMなど、年月の部分を書き換えて
SQLで実行したり、コマンドプロンプトで取得したり。

手作業で日付を変えるのがめんどくさいので、
置換するvbscriptを作ってみた。




前に学習した文字列で複数の引数を受け渡す仕様に。
視認性を上げるために、区切り文字は「■」に設定。

本当は出力ファイルの存在チェックをして、
ない場合はエラーにする処理をいれるべきなんだけど、今回は割愛。

※ 意図しないところが置換されないようキーワードで事前検索を


以下、ソース。テキストファイルの ダウンロード
つづきはこちら "指定したテキストファイルの文字列を置換して、別名保存(上書き)するVBScript"

デバッグログを出力するVBScript

2022年05月22日
VBScriptを作ってると、デバッグ機能が欲しくなる。
開発環境がなくてメモ帳(otbedit)ベースなので、できることはメッセージボックスで表示。

けど、ループ中にメッセージボックス入れようものなら、
毎回メッセージボックスが出てたまらん。

てな理由からログファイルを出力するVBScriptを作ってみた。

記事を書くときに調べてみたら、有償ソフトでデバッグ環境あんのね。。。
無償トライアル版もあるらしい。今度使ってみよう。
https://www.depthbomb.net/?p=2708#toc6




気を取り直して、デバッグログを出力する仕様について

VBAだとdebug.print(Text)の形式だったので、
DebugText(Text)でログファイルにTextを吐き出す仕様にした。

出力先は定数で設定可能に。して、
該当のフォルダやファイルがなければ
call makeDirEX(Path)で自動的に作成。

実行中のスクリプトファイル名と開始日時を取得して
Textと合わせて書き込む。
ファイル名取得はここを参考に。てか1行かよ!
https://bayashita.com/p/entry/show/174


以下、ソース。
つづきはこちら "デバッグログを出力するVBScript"

更新日時を付与するVBSを修正

2022年04月29日
昨日の記事で触れた更新日時を付与するVBScript触ってて気づいた。
更新日時を名前に付与って、ファイルだけじゃなくてフォルダにもやりたいよね。

ドラッグドロップしたファイルを印刷するVBScriptをネットで拾ってきて
それをベースに作ってたせいでフォルダ非対応になってたので
修正してみた。

Inputがファイルかフォルダかは事前にわかってるので、
名前を決める処理とリネーム処理の部分をフォルダに対応するだけ。

すっきりしないソースになっちゃったけど、動いたからいいや。

参考にしたサイト

'ドラッグドロップでファイルを印刷するスクリプト
'http://chuckischarles.hatenablog.com/entry/2018/10/29/002921
'ファイル名の末尾に更新日時を付与するVBScript
'http://gren-dken.hatenablog.com/entry/2013/08/22/000119


以下ソース。
つづきはこちら "更新日時を付与するVBSを修正"

フォルダがなければ作るスクリプト

2022年03月29日
xcopyコマンドを使ったログ回収について書いたけど、
xcopyってコピー先のフォルダがないとエラーを吐くのがいまいち。

そういえば、前にフォルダがなければ作るマクロを作ったよな。。。
てなわけで、VBAのソースをVBScriptに移植することにした。

元ソースは、マイドキュメントにフォルダがなければ作るマクロ

前に作ったときは、ユーザーフォルダを取得するのにガチャガチャやってたけど、
フォルダがなければ作る処理だけなら20行いかないのね。

VBAとの違いは、変数の型を指定できないこと。
for ~ next の後にループ変数を入力できないこと。
sub ~ end subの記載のない部分が実行されること。

思った以上に簡単に移植できた。

xcopyのコマンドを作る際に、コピー先フォルダをこれで作っておけば便利かも。

以下、ソースを「MakeDirEX.vbs」などの名前で保存。
コマンドプロンプトなら「mkdir -p 」でいいんじゃね?って話はなしで!!
つづきはこちら "フォルダがなければ作るスクリプト"