忍者ブログ

空フォルダを消すクリーナバッチを改良

2022年04月30日
昨日からバッチファイルの勉強してて、書籍を1つ読破。

前にネットからまるパクリした空のフォルダをまとめて削除するバッチ
ソースを見返してみたけど理解できず。

本とネットを駆使してようやく理解できた。



●空フォルダ削除
for /f %%A in ('dir /ad /b') do rd %%A
※ フォルダ名にスペースが入ってると消してくれない


%%Aがループで使用する変数。
('dir /ad /b')がディレクトリ内の全フォルダを取得するコマンド。
今回、フォルダを対象とするので、
dirコマンドで一覧を取得。/ad:フォルダのみを対象に /b:フォルダ名だけ取得
for文の中で文字列として受け取るので /f
取得したフォルダ名が%%Aに入ってるので、rdコマンドで削除。

実はオプションなしでrdコマンドを打つと空フォルダしか消さない。

空じゃないフォルダも消すならrd /s /q とサブフォルダを対象にして
確認メッセージをスキップするオプションを指定する必要がある。
(win10環境だと/sでいけた。書籍は古いのでdeltreeで消すって書いてあった。)


※で書いた弱点克服のために試行錯誤。
"usebackq"オプションをつけてみたけどうまくいかず。rd "%%A"もだめ。
そして気づいた。そもそも全然違うことに。

改めて調べてみたらここがわかりやすい。
https://www.javadrive.jp/command/bat/index9.html#section1

カレントディレクトリにあるディレクトリの分だけ繰り返す
FOR /D %%変数 IN (セット) DO コマンド
for /d %%A in (*) do rm %%A

バッチファイルのあるディレクトリの空フォルダを消す正しいコマンド。
スペースの入ったフォルダも対象にするには""でくくればOK。やっと弱点克服。

●最終的なコマンド
for /d %%A in (*) do rm "%%A"

どのファイルを消したかとか見たければ、最後にpauseを付ける。
するとコマンドプロンプトウィンドウが表示されたままになる。

以下、ソースと結果(%0でバッチファイル名を取得できる)
こんな簡単に結果を見れるならVBScriptよりも使いやすいよなぁ・・・。
PR
つづきはこちら "空フォルダを消すクリーナバッチを改良"

更新日時を付与する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を修正"

ファイルを引数とするVBSを右クリックメニューの「送る」に登録して呼び出す

2022年04月28日
前に書いた記事「ドラッグドロップで更新日時をファイル名に付与するVBScript
など、ファイルを引数に持つVBScriptを作ってみたけど、
いちいちVBScriptファイルの場所を開いてドラッグドロップするのがめんどくさい。

ふと気づいた。
右クリックで表示されるメニューの「送る」に登録したらどうなる?
つづきはこちら "ファイルを引数とするVBSを右クリックメニューの「送る」に登録して呼び出す"

エクセルのオフセット参照について

2022年04月17日
エクセルのオフセット参照について
めっちゃ便利なのに周りで使ってる人がいないので紹介。


エクセルのセル参照は、絶対参照と相対参照の2種類。
数式を他のセルにコピーしたときの動きが違う。

絶対参照は、コピーしても参照先が変わらず同じ結果に。
相対参照は、コピーすると参照先が一緒に変わる。

どっちも参照先のセルを移動(カット&ペースト)させると
参照先に追従して自動的数式が修正される。


追従しない参照方法がoffset関数を使ったオフセット参照。
基準セルからの位置関係で指定するので、
参照先のセルがカット&ペーストされても参照先の位置が変わらない。
つづきはこちら "エクセルのオフセット参照について"

テキストをコピーしてからURLを開くバッチ

2022年04月12日
よくアクセスするサイトのIDとパスワードの打ち込みがめんどくさい。

そこで、バッチファイルを叩くとサイトへジャンプして、
IDとパスワードをクリップボードに送るバッチを作ってみた。
つづきはこちら "テキストをコピーしてからURLを開くバッチ"