6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

batコマンドでPythonスクリプトの戻り値を取る際の注意点

Last updated at Posted at 2019-09-11

Pythonスクリプトをbat経由で実行する際に、戻り値を取りたい場合があります。
その際に、%ERRORLEVEL%を使うというのは有名な話ですが、少々ハマったので、その部分を記載しておきます。

まず、基本形です。

sample.py
import sys

sys.exit(1)

print.bat
@echo off

python sample.py
echo %ERRORLEVEL%

REM 実行結果
REM 1

sample.pyの実行結果が%ERRORLEVEL%に格納されるので、それを表示するだけの簡単なものです。
しかし、同じpyファイルを使った次のbatコードは上手く動きません。

print.bat
@echo off

python sample.py
cd /d d:\software
echo %ERRORLEVEL%

REM 実行結果
REM 0

気付いてしまえばそれまでなのですが、ERRORLEVELは直前に実行されたコマンドの戻り値が入ります。
従って、間に他のコマンドが入ってしまうと、期待した結果が得られないことになります。
これを回避するためには、一旦他の変数に格納して参照するようにすれば良いです。

print.bat
@echo off

python sample.py
SET RESULT=%ERRORLEVEL%
cd /d d:\software
echo %RESULT%

REM 実行結果
REM 1
6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?