在 Windows 使用 BAT-File 來安裝 anaconda 環境

Jacky | Jan 9, 2021 min read

前言

以前常常用Python環境來跑程式,有時可能要同時在好幾台電腦測試。雖然每台電腦都裝Anaconda來管理環境,理論上導出環境裡的套件清單就能直接安裝,但偏偏有時清單裝到一半就會失敗,變成得手動輸入指令安裝,所以才會做一個批次檔去自動輸入安裝指令。

寫成批次檔有個好處,可以去追朔之前各個手動安裝的版本,尤其是電腦科學近年發展神速,TensorFlow常常更新,有時根本措手不及,安狀太新的版本反而會出現一堆Bug。

範例程式碼

檔名:install.bat (儲存編碼要用ANSI碼,中文才不會變亂碼)

@echo off
echo.
echo. 一鍵安裝 Aanconda Python 環境

:choice
set /P c=是否開始安裝?[Y/N]
if /I "%c%" EQU "N" goto :somewhere
if /I "%c%" EQU "Y" goto :somewhere_else
goto :choice

:somewhere
echo 再見
pause 
exit

:somewhere_else
echo Y | call conda create -n tf1 python=3.5
echo Y | call conda activate tf1
echo Y | call pip install tensorflow==0.12.0
echo Y | call pip install keras==1.2.2

call conda deactivate
pause
@echo on

只有我懂的說明

set指令

set [<variable>=[<string>]]
set [/p] <variable>=[<promptString>]
set /a <variable>=<expression>
參數 描述
<variable> 指定要設定或修改的環境變數。
<string> 指定要與指定的環境變數相關聯的字串。
/p 將的值設定<variable>為使用者所輸入的輸入行。
<promptstring> 指定提示使用者輸入的訊息。 此參數必須搭配 /p 參數使用。
/a 設定<string>為評估的數值運算式。
<expression> 指定數值運算式。
/? 在命令提示字元顯示說明。
  • 不加參數直接輸入SET,可以顯示環境變數

  • /a參數:做數學運算

set /A a = 40 * (20 - 15 )
echo 40 * (20 - 15 ) = %A%
  • /p參數:把檔案內容存到環境變數

將使用者輸入的內容存到變數中

set /P c=是否開始安裝?[Y/N]
echo your answer %c%

將指定檔案內容取到變數中

set /P c=

if指令

  • 比較運算子
比較運算子 說明
EQU 等於
NEQ 不等於
LSS 小於
LEQ 小於或等於
GTR 大於
GEQ 大於或等於
  • 擴充命令[/I]

比較輸入的字串是否一樣

IF [/I] string1 compare-op string2
set /P c=是否開始安裝?[Y/N]
if /I "%c%" EQU "N" echo No
if /I "%c%" EQU "Y" echo Yes

goto指令

跳至某一行

set /P c=是否開始安裝?[Y/N]
if /I "%c%" EQU "N" goto :somewhere
if /I "%c%" EQU "Y" goto :somewhere_else

:somewhere
echo statement 1
pause

:somewhere_else
echo statement 2
pause

call指令

如果要要執行非BAT指令的話,就要在前面加上call來執行,例如conda指令、pip指令:

call conda create -n tf1 python=3.5
call conda activate tf1
call pip install tensorflow==0.12.0
call pip install keras==1.2.2

echo Y | 指令

用來自動輸入字串

echo Y | call conda create -n tf1 python=3.5

Refer

comments powered by Disqus