【Windows】【*.bat】バッチファイルで行数を判定したい!空のフォルダを削除したい!!!
毎日workフォルダを作ってるんだけど、もし1日終わって中身が空だったら消せるようにしたい。
どうすればいい?
こんな質問をされたのでバッチでどうにか出来るか考えてみた。
要はLinuxで言う、find -empty
とかwc -l
でif判定するとかすればいいわけだよね。
やってみた
行数で判定するのが楽かなと思ったので試行錯誤してたらこうなった。
対象フォルダをYYYYMMDD
という名前と仮定。
empty.bat
@echo off
setlocal
rem 日付をYYYYMMDDで変数定義
set TODAY=%date:/=%
rem 対象フォルダのフルパスを変数定義
set EMPTY_FOLDER=C:\bat\%today%
rem 対象フォルダのファイル・フォルダ数を変数定義
for /f "usebackq" %%I in (`dir /b %EMPTY_FOLDER% ^| find /c /v ""`) do set CNT=%%I
rem 0個ならフォルダ削除
if %CNT% equ 0 (
rmdir %EMPTY_FOLDER%
)
endlocal
exit
長くない????
多分もうちょっとどうにかなるけど、とりあえずそれっぽいのでこれで。
find /c /v ""
で行数を判定できる。
find /c
で行数を表示。
find /v ""
で空文字に該当しない行数(要はdir /b
の結果の行数)を数えられる。
これがUNIXで言うwc -l
らしい。知らなかった。
batのfor文は特殊なので割愛します。
気になる方はこちらを参考にしてください。
.bat(バッチファイル)のforコマンド解説。
余談
for /r
でも出来るっぽいね。
Author And Source
この問題について(【Windows】【*.bat】バッチファイルで行数を判定したい!空のフォルダを削除したい!!!), 我々は、より多くの情報をここで見つけました https://qiita.com/dogimagu/items/f7c46ef2c73b10deb7ff著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .