windows下使用批處理檔案呼叫python程式

2021-09-06 10:30:22 字數 1348 閱讀 3714

這個隨筆涉及到幾個批處理指令碼得知識點。

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

endlocal

rem --- batch file: fron_timeoutmonitor.bat

setlocal

call fron_profile.bat

%my_python% %package_parent_path%frondeamonfron_timeoutmonitor.py 

endlocal

Windows下使用bat批處理檔案實現程序守護

今天有個東西,想做個程序守護,保持持續連線,本來想用processlasso,但是人家是收費的,並且是做程序管理的。無奈,只能找找其他解決方案。發現bat也可以實現程序守護,找了找,找到了乙個 windows下bat批處理實現守護程序 有日誌 jack meng 寫得非常全,但是我不需要日誌的功能,...

Windows下備份網路檔案批處理檔案

set now date 6,4 date 0,2 date 3,2 set a ye now 1 xcopy 10.122.1.18 d micros database data backup archive f daily micros s i p d date 0,2 date 3,2 dat...

使用批處理檔案

字尾是bat的檔案就是批處理檔案,是一種文字檔案。簡單的說,它的作用就是自動的連續執行多條命令,批處理檔案的內容就是一條一條的命令。那它有什麼用呢?比如,在啟痺ps軟體時,每次都必須執行 c cd wps c wps spdos c wps py c wps wbx c wps wps 如果每次用w...