前言
以前常常用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