作者caron0225 (淯仔)
看板Python
标题[问题] 封包好的exe档如何不指定路径在cmd执行
时间Thu Jan 31 09:40:36 2019
大家好,请跟大家请教一下
先说一个实际范例,小弟我在跑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 呢??
拜托大大们建议做法或参考资料。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.248.190.37
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1548898838.A.91D.html
1F:→ BZnoo: call EXENAME ./文字档.txt 01/31 10:19
bat只有这样的内容的话,cmd会跳出不是内部或外部的执行档,找不到EXENAME
我必须先在前面加一行 「cd/d EXENAME所在路径」,如何省略这行也能让cmd知道我要
执行EXENAME。
另外就是我要如何修改原始EXENAME的PYTHON档,让EXENAME知道我要读的txt档案路径
就是bat档所在的路径。
有部分我没说清楚,EXENAME所在路径叫A路径,bat与txt档案所在路径同为B路径,A
路径与B路径不相同
※ 编辑: caron0225 (60.248.190.37), 01/31/2019 12:35:39
2F:→ justoncetime: bat是在OS上执行,要能任意地方都能跑urexe当然是OS 01/31 19:05
3F:→ justoncetime: 解决,一般是去设定path. 01/31 19:05
4F:→ justoncetime: 如会先cd到bat位置,那就是os.getcwd()现工作目录 01/31 19:09
5F:→ justoncetime: 如果想知道py自己位置os.path.realpath(__file__) 01/31 19:10
6F:→ justoncetime: 我是g: get curreny py file location, 当然另外要 01/31 19:11
7F:→ justoncetime: 有操作OS的观念,遇到问题才能选择比较万用的方式. 01/31 19:12
8F:→ justoncetime: 尤其是你的程式要丢给别人用的时候 01/31 19:12
9F:→ justoncetime: 还要弄清相对/绝对路径 01/31 19:14
10F:→ BZnoo: 其实只要在bat档里指定EXENAME的绝对路径就行了,余相同 01/31 20:09
11F:→ BZnoo: 第一行不要只 call //somedir1/somedir2/EXENAME ./某.txt 01/31 20:12
12F:→ BZnoo: 因为你执行时是在bat所在 ./某.txt 当然是被引用得到的噜 01/31 20:12
13F:→ BZnoo: //指的是根目录 若不同碟(区?)则前面要加上其名之类 查一下 01/31 20:15
感谢两位大大的回答,已经解决我目前问题了!!
首先在windows的环境变数中去加入我的EXENAME路径。
那麽在cmd中,不论在何种路径下,都能执行EXENAME。
接着在EXENAME的原始python代码中,透过os.getcwd()可以抓到我目前的工作路径。
原本我一直以为os.getcwd()给的路径指的是EXENAME的所在路径,其实是指当前OS的
工作路径,误会很久了O_Q
感谢两位大大们的回覆!!
※ 编辑: caron0225 (60.248.190.37), 02/01/2019 10:16:32
题外话,我在windows的环境变数中,并没有看到abaqus在里面,abaqus 是怎麽作到
不需要事前cd到执行档所在路径就可以执行呢?
是我在安装abaqus软体时,安装档把路径给登录到windows我看不到的地方吗??
※ 编辑: caron0225 (60.248.190.37), 02/01/2019 10:31:30
14F:→ justoncetime: docs.microsoft.com/windows/desktop/shell/ 02/01 16:13
15F:→ justoncetime: app-registration 好像是这个吧(自己并路径吧) 02/01 16:14