windows下使用批處理文件調用python程序


這個隨筆涉及到幾個批處理腳本得知識點。

 

windows的start命令, 啟動另一個窗口運行指定的程序或命令。

 

windows的call命令, 從批處理程序調用另一個程序, 直到被調用程序退出, 再繼續原先的批處理程序

 

參數: windows, %0為shell 本身, %1為第1個參數, 以此類推

      linux, $0為shell 本身, $1為第1個參數, 以此類推

返回值: windows:當一個命令完成后, 可以使用 %errorlevel% , 獲得 exit code

        linux: 可以使用$?得到上個命令的exit code

 

永久環境變量:

windows, 在操作系統環境變量中設置的變量

   linux: 在profile文件中, 使用export命令定義的變量   

 

臨時環境變量: 

   windows, 在前一個bat中使用 Set 命令設置了一個環境變量, 后面的bat文件就可直接使用該環境變量

   linux, 在前一個script使用=號設置了一個環境變量, 后面的script文件拿不到該變量值, 除非使用export命令, 也即是說=設置的環境變量作用域是local的, export設置的變量時global的. 

   windows是不區分local變量和global變量的做法, 會pollute變量的. 為此windows 引入了 setlocal 和 endlocal命令, 在這兩個命令直接set的變量即為local變量, 否則就是global變量.

 

下面是一個 Windows 示例, 啟動python程序, 中間涉及到PYTHONPATH環境變量, 我采用了 setlocal 方式, 避免污染OS的PYTHONPATH環境變量.  

rem --- batch file: fron_profile.bat

SET MY_PYTHON=C:pythonenvpython27_flaskScriptspython.exe

SET PACKAGE_PARENT_PATH=D:trunkCronAnyWheresrc

SET PYTHONPATH=%PACKAGE_PARENT_PATH%

 

rem --- batch file: fron_importfromcrontab.bat

setlocal

call fron_profile.bat

%MY_PYTHON% %PACKAGE_PARENT_PATH%frondeamonfron_importfromcrontab.py app_domain=%1 crontab_file=%2

endlocal

rem --- batch file: fron_timeoutmonitor.bat

setlocal

call fron_profile.bat

%MY_PYTHON% %PACKAGE_PARENT_PATH%frondeamonfron_timeoutmonitor.py 

endlocal

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM