Windowsのバッチのライブラリを作り始めた(ヘルプ出力バッチ&テキストの行数出力バッチ)
なお不定期。
業務で使う特定の処理のバッチを作ってライブラリにしようかなと思って少し書いてみた。 ブログのタイトルにもしてるんですけど、なんでも作る時に命名が難しすぎますね。。。 まだライブラリ未満です。
将来これを拡張して便利なものに~~~とか思ってたんですけど 既にあったりするのかな。 勉強にはなったけれど貢献になるか割と微妙ですね!
面白かったのでとりあえず記事に残しときます。
ヘルプを出力するバッチ
概要
ヘルプの前提は以下です。
- バッチの中にヘルプ文言を全部書く。
- ヘルプは引数エラーの時のみ出力する(/h)など未対応
ファイル名称
ShowHelp.bat
ソースコード
@echo off setlocal enabledelayedexpansion if "%1"=="" ( echo 引数が不正です。ヘルプを表示します。 "%~f0" "::" "%~f0" goto :EOF ) goto TopOfCode ::ShowHelp.bat - 指定のバッチファイルのヘルプを表示します。 :: ::使用法 :: ShowHelp [コメントアウト文字列] [ファイルパス] :: ::詳細 :: 指定のバッチファイル内のコメントアウト文字列を使ったヘルプを表示します。 :: ::例 :: 以下の内容のファイルのヘルプを表示する時 :: 対象ファイル :Test.bat :: コメントアウト文字列:// :: "ShowHelp.bat" "//" "Test.bat" :TopOfCode set annotation=%~1 set filepath=%~f2 for /f "usebackq delims=" %%a in (`findstr /R "^%annotation%" "%filepath%"`) do ( set cmt=%%a set cmt=!cmt:%annotation%=! echo.!cmt! ) endlocal
テキストファイルの行数を出力するコマンド
概要
Windowsバッチにはwcがないのでつくりました。 行数のみをぱっと出力するコマンド。
ファイル名称
CountLine.bat
ソースコード
@echo off setlocal REM 引数 set drive=%~d1 set filePath=%~f1 if "%filePath%"=="" ( echo 引数が不正です。ヘルプを表示します。 ShowHelp "::" "%~f0" goto :EOF ) if not exist "%filePath%" ( echo.0 goto :EOF ) goto TopOfCode ::CountLine.bat :: ::使用法 :: CountLine [TEXT FILE] ::詳細 :: パラメータで指定したテキストファイルの行数を取得します。 :: :TopOfCode pushd %~dp0 REM 指定のファイルパスがUNC形式の場合、参照する場所が違う。 set tokensNumber=3 If "%drive%"=="\\" set tokensNumber=2 for /f "usebackq tokens=%tokensNumber% delims=:" %%a in (`find /v /c "" "%filePath%"`) do ( set count=%%a ) echo %count: =% popd endlocal
以上!