Python script to Batch file

后端 未结 5 497
半阙折子戏
半阙折子戏 2021-01-03 10:26

I have a batch file that runs a python script. I am running Python 3.2. I want to send a variable like an integer or string from the python script back to the batch file, is

5条回答
  •  旧巷少年郎
    2021-01-03 10:41

    You can try this batch script for this issue, as an example:

    @echo off
    
    REM     %1 - This is the parameter we pass with the desired return code for the Python script that will be captured by the ErrorLevel env. variable.  
    REM     A value of 0 is the default exit code, meaning it has all gone well. A value greater than 0 implies an error
    REM     and this value can be captured and used for any error control logic and handling within the script
       
    set ERRORLEVEL=
    set RETURN_CODE=%1
    
    echo (Before Python script run) ERRORLEVEL VALUE IS: [ %ERRORLEVEL% ]
    echo.
    
    call python -c "import sys; exit_code = %RETURN_CODE%; print('(Inside python script now) Setting up exit code to ' + str(exit_code)); sys.exit(exit_code)"
    
    echo.
    echo (After Python script run) ERRORLEVEL VALUE IS: [ %ERRORLEVEL% ]
    echo.
    

    And when you run it a couple of times with different return code values you can see the expected behaviour:

    PS C:\Scripts\ScriptTests> & '\TestPythonReturnCodes.cmd' 5
    
    (Before Python script run) ERRORLEVEL VALUE IS: [ 0 ]
    
    (Inside python script now) Setting up exit code to 5
    
    (After Python script run) ERRORLEVEL VALUE IS: [ 5 ]
    
    PS C:\Scripts\ScriptTests> & '\TestPythonReturnCodes.cmd' 3
    
    (Before Python script run) ERRORLEVEL VALUE IS: [ 0 ]
    
    (Inside python script now) Setting up exit code to 3
    
    (After Python script run) ERRORLEVEL VALUE IS: [ 3 ]
    
    PS C:\Scripts\ScriptTests
    

提交回复
热议问题