2020-02-10

利用批次檔(.bat) 執行 python script

我有幾個 python script 想要每天執行,當然就需要 Windows 的排程功能,因為要執行的 python script 不只一個,於是想利用批次檔(.bat) 來依序執行,沒想到要利用批次檔執行 python script 有一些小地方要注意。

以下就紀錄一下想在 Windows 下使用批次檔執行 python script 的注意事項:
  1. 請使用記事本編輯批次檔(.bat)
    1. 將編碼改為 ANSI,原先我是用 Notepad++ 編輯,但執行批次檔時中文路徑一直有問題,後來才知道批次檔的編碼如果是 ANSI 就沒問題。
    2. Notepad++ 預設編碼是 UTF-8,如果要在批次檔中使用 UTF-8,要將 code page 改成 65001。
    3. 換行符號要改成 Windows CR LF 格式。
    4. 用 call 來執行 python script 而不是 start
    5. 以下是批次檔的範例,chcp 指令用來切換 code page,UTF-8 是 65001
      @echo off
      chcp 65001
      call python scriptDir\my_script.py
      pause 
      
  2. 錯誤訊息
    1. 當需要 import numpy 時會出現如下的錯誤訊息,主因是 DLL Load Failed
    2. 可在命令提示字元(cmd) 中輸入以下的測試碼
      python -c "import numpy"
      
  3. 解決方法:將 Anaconda3\Library\bin 加入到 PATH 環境變數中
  4. 參考網址:
    1. When trying to use numpy: "DLL Load Failed: The specified procedure could not be found."
    2. 在命令提示視窗(Command Prompt)顯示UTF-8內容
    3. 處理 .bat 有中文路徑的問題
    4. 建立python程式自動執行批次檔(with Anaconda promt)
    5. 設定 Windows 工作排程定期執行 Python 爬蟲程式