Jenkinsでバッチコマンドを実行する場合、戻り値が重要です。 ビルドステップでのシェルやバッチでは、戻り値が0の場合、成功、それ以外は失敗と判断されます。 呼び出したバッチファイルやコマンドの戻り値は、環境変数のERRORLEVELに入りますのでそれで判定します。
dir /A-D /S /B | find /c /v "" /B ファイル名のみを表示します。(見出しや要約が付きません) /S 指定されたディレクトリおよびそのサブディレクトリのすべてのファイルを表示します。
for %%i in ([ファイル名]) do echo %%~zi echo %~z1 (※バッチファイルの第1引数に指定した場合の例)
for %%F in (ファイル名) do if %~zF==0 goto SIZEZERO
set /a counter=0 rem for /r にすると その下のものすべて対象 for %%A in (*) do ( if exist %%A (set /a counter=counter+1) )
ファイルの無い所では、ワイルドカードは使用出来ません。
Windows7のcmd.exeはUTF-8での日本語表示は正式対応していないようです。FineView Software Labsさんの、「雑技>エディタ/ コンソール」のページの「コマンドプロンプト と Unicode」の章には、貴重なトライアルの様子が書かれています。
UTF-8にして生じた問題点 × 日本語などが入力できなくなる。
WindowsでPythonとかを使っているとUTF8の文字が化けて出力されて厳しいので、コマンドプロンプトの出力をUTF8に変換する コマンドプロンプトもどきをつくってみた。
if not %errorlevel% == 0 exit 1 というように展開した上で文字列での比較を行うことで「0ではないとき終了」するようになります。
呼び出したバッチの戻り値を確認する ERRORLEVEL環境変数を見る。
ERRORLEVELは、以下のような場合に設定されます。 - callしたバッチスクリプトが「exit /b 終了コード」の形式で終了した場合