Jeninsfileのbatプロセスで空の改行の有無で実行結果が変わる
もしかしたらコマンドプロンプトでも同等の現象が起こるかもしれないが、起こし方がわからない
以下のようなJenkinsfileを作成したら、実行時にエラーとなった
%MUBUILD%はMSbuildコマンドとオプションを全部くっつけたもの
code:jenkinsfile(groovy)
stage('データ出力処理') {
steps {
bat '''
@echo on
chcp 65001
cd CSVデータ出力
%MSBUILD% CSVデータ出力/CSVデータ出力.csproj
'''
}
}
code:bat
0 C:\JENKINS_HOME>chcp 65001
1 Active code page: 65001
2
3 C:\JENKINS_HOME>cd CSVデータ出力
4
5 C:\JENKINS_HOME\CSVデータ出力>CSVデータ出力/CSVデータ出力.csproj
6 'SVデータ出力' is not recognized as an internal or external command,
7 operable program or batch file.
5行目の%MSBUILD%がごっそり消えてる
なんでこうなる?
cdのあとに空行を入れるとなぜか正しく認識される
code:jenkinsfile(groovy)
stage('データ出力処理') {
steps {
bat '''
@echo on
chcp 65001
cd CSVデータ出力
%MSBUILD% CSVデータ出力/CSVデータ出力.csproj
'''
}
}
code:bat
0 C:\JENKINS_HOME>chcp 65001
1 Active code page: 65001
2
3 C:\JENKINS_HOME>cd CSVデータ出力
4
5 C:\JENKINS_HOME\CSVデータ出力>MSBuild.exe (略) CSVデータ出力/CSVデータ出力.csproj
%MSBUILD%が実行されている
なんでかわからん…
Claude.icon(2026/05/14)
原因: chcp 65001によるコードページ切り替えタイミング問題
何が起きているか
chcp 65001(UTF-8)に切り替えた直後の1行が、文字化けや誤読で消えることがある。
これはWindowsの既知の挙動で、cmd.exeがコードページを切り替えた後、バッファに残っている次のコマンド文字列を旧コードページで読み直してしまうことがある。
マジで?そんなことあるの?