主题:如何获得文件的当前路径?
咖啡猪
[专家分:290] 发布于 2005-06-13 00:27:00
请问如何获得文件的当前路径?
DOS系统是98自带的(对了98自带的DOS是什么版的?)
已知条件是: 主程序文件名、数据文件名
我的主程序会调用数据文件的数据,但用户老是移动这两个文件的目录或改目录名(两文件还在一起)
我想测定主程序文件所在的路径从而准确的调用数据文件
也就是说,只要两个文件在同一路径下,放到哪里都可以使用。
请高手帮忙解决一下,小弟先谢了。
回复列表 (共10个回复)
沙发
moz [专家分:37620] 发布于 2005-06-13 08:24:00
1. 你把路径省略掉就可以了
2. 在7.1里可以用curdir$获得当前路径
板凳
咖啡猪 [专家分:290] 发布于 2005-06-13 23:06:00
省略可以解决调用数据文件的问题,但要保证两文件在同一目录下。
我想获得当前路径也是想从根本上解决这个问题。
3 楼
咖啡猪 [专家分:290] 发布于 2005-06-13 23:07:00
对了,你说的7.1是说的DOS吗?问题是我不能改用户的系统呀
4 楼
qb45 [专家分:2880] 发布于 2005-06-14 08:34:00
这里有个获得路径的程序
http://www.hoker.cn/hoker/bbs/dispbbs.asp?boardID=2&ID=1608
5 楼
moz [专家分:37620] 发布于 2005-06-14 11:07:00
7.1是QB7.1
不是DOS
抱歉,我搞不明白你的用意
"(两文件还在一起)
我想测定主程序文件所在的路径从而准确的调用数据文件
也就是说,只要两个文件在同一路径下,放到哪里都可以使用。"
"省略可以解决调用数据文件的问题,但要保证两文件在同一目录下。
我想获得当前路径也是想从根本上解决这个问题。"
又说在同一路径,又说不要保证同一目录,我都不知道怎么回事,
你的当前路径是哪个文件的当前路径?
当前路径就是当前路径,还用得找吗?就在眼前.
要找文件的绝对路径用dir或者用WIN的搜索好了.
6 楼
咖啡猪 [专家分:290] 发布于 2005-06-14 17:10:00
抱歉,可能没有说清楚。
简单的说就是:怎么知道当前你点击执行的Qbasic程序文件的绝对路径?
当然不是在点击前查看一下属性,我要的是程序本身可以获得自己的绝对路径。
7 楼
咖啡猪 [专家分:290] 发布于 2005-06-14 17:51:00
我想到一个思路:
1、就是程序先在当前路径下创建一个文件(随便什么文件)
2、然后再查找这个文件的绝对路径,(这个路径也就是程序本身所在的绝对路径)
请问怎样查找一个文件所在的路径比较方便?
总不至于让我用"DIR abc.abc /S/A"吧,就是这样还要切换几个盘符搜
哪样分析的程序不是比我程序本身还要大的多,再说也会影响程序本身执行的速度。
还请赐教
8 楼
moz [专家分:37620] 发布于 2005-06-14 20:05:00
QB45的链接好像过期了,
都看不到东西了,
关于这些函数45好像做了不少了,
你翻一翻旧贴应该能找到,
如果你用的是QB7.1的话,
就按我说的调用curdir$就可以了.
如果还要去找其他目录的其他文件的话,
还是去翻翻旧贴,
我也写过,但我写的东西都是用shell "dir"的
不好用,
还是向45学学怎样调用系统中断功能比较稳妥.
9 楼
qb45 [专家分:2880] 发布于 2005-06-15 10:46:00
print "当前盘符的当前路径="; CurrentPath$
FUNCTION CurrentPath$
'本函数的功能:获得当前盘符的当前路径
'本函数使用方法举例 : 如果要知道当前盘符的路径
'程序:PRINT "当前盘符的目录为- ";CurrentPath$
'获得当前路径的中断资料:入口AH=47 DL=0A,1B... 返回DS:SI地址=路径字符串
DIM PathSize AS STRING * 64
DIM Reg%(9)
Reg%(0) = &H4700
Reg%(3) = ASC(CurrentDrive$) - 64
Reg%(8) = VARSEG(PathSize)
Reg%(5) = VARPTR(PathSize)
CALL INT86XOLD(&H21, Reg%(), Reg%())
CurrentPath$ = LEFT$(PathSize, INSTR(PathSize, CHR$(0)) - 1)
END FUNCTION
10 楼
咖啡猪 [专家分:290] 发布于 2005-06-15 14:25:00
谢谢
我用的是DOS自带的QBbasic 1.1
刚刚接触4.5 没有用过7.1
系统中断我不会,上面的45的程序我看不太懂
我想我还是老老实实的跟45学学如何调用系统中断再说吧
我正在论坛里找有关的帖子,如果搞不懂再另行请教
再次感谢
我来回复