[問題] 封包好的exe檔如何不指定路徑在cmd執行

作者: caron0225 (淯仔)   2019-01-31 09:40:36
大家好,請跟大家請教一下
先說一個實際範例,小弟我在跑abaqus的inp檔的時候,我可以編輯一個bat檔
內容是:call abaqus j=INPNAME
只要該bat檔跟INPNAME檔在同一個資料夾,當我執行bat檔時,bat會啟動cmd然後執行
abaqus 去讀INPNAME檔。
從這個範例來看,我不需要特地在bat檔裡面編輯cd/d INP所在的路徑
便可以讓cmd知道我目前的路徑並且告訴abaqus。
現在,小弟用python編寫了一個計算工具,並封包成exe檔。
計算過程類似abaqus這樣,執行該exe檔時載入一個txt檔案,然後完成我想要的計算。
如果我想要用bat去執行該exe檔,我必須要在bat檔作一個指定路徑的命令。
EX:
cd/d EXENAME 路徑
call EXENAME
我如何仿照abaqus這樣,不需要特地輸入 cd/d EXENAME這樣的命令,讓他知道我的路徑
就是bat檔本身所在的位置並且告訴 EXENAME 呢??
拜託大大們建議做法或參考資料。
作者: BZnoo (Uba)   2019-01-31 10:19:00
call EXENAME ./文字檔.txt
作者: justoncetime (台北叢林好冷~)   2019-01-31 19:05:00
bat是在OS上執行,要能任意地方都能跑urexe當然是OS解決,一般是去設定path.如會先cd到bat位置,那就是os.getcwd()現工作目錄如果想知道py自己位置os.path.realpath(__file__)我是g: get curreny py file location, 當然另外要有操作OS的觀念,遇到問題才能選擇比較萬用的方式.尤其是你的程式要丟給別人用的時候還要弄清相對/絕對路徑
作者: BZnoo (Uba)   2019-01-31 20:09:00
其實只要在bat檔裡指定EXENAME的絕對路徑就行了,餘相同第一行不要只 call //somedir1/somedir2/EXENAME ./某.txt因為你執行時是在bat所在 ./某.txt 當然是被引用得到的嚕//指的是根目錄 若不同碟(區?)則前面要加上其名之類 查一下
作者: justoncetime (台北叢林好冷~)   2019-02-01 16:13:00
docs.microsoft.com/windows/desktop/shell/app-registration 好像是這個吧(自己併路徑吧)

Links booklink

Contact Us: admin [ a t ] ucptt.com