回 帖 发 新 帖 刷新版面

主题:跪地求助:在qb中如何搜索文件?

我想问的是:
在qb中如何在所有硬盘分区搜索某个文件,并获得这个文件的完整路径?
就像在dos中的如下命令:
set disk=c:,d:,e:,f:,g:
for %i in (%disk%) do dir %i\readme.txt /s /b

回复列表 (共11个回复)

沙发

如果可以撇开文件名长短的问题的话并不难
用chdir和dir$还有chdrive就可以了
还可以用shell “dir   /s>某个文件”

板凳

谢了!
shell方法我知道.
用dir$函数、chdir和chdrive语句搜索文件,我之前试了,但思路不清,还真做不来。
能不能写个例程,具体说说?

3 楼

老实说吧,最好还是找老大弄点中断的东西来搞一搞。
可惜在XP不可以直接访问硬盘的信息。
QB不支持长文件名,很麻烦的,我还不知道该怎样转换呢。
而且QB好像没有获得路径的语句

4 楼

moz:
虽然问题不能解决,但我还是要谢谢你的!
我是刚来的,啥也不懂,还望多多关照!

5 楼

还有
files
open
on error
close

6 楼

调用INT21也可以

7 楼

[fly]def是什么人,怎么老是发这样的滥帖![/fly][em24]

8 楼

男儿膝下有黄金,别让人看不起!

9 楼

搜索文件的代码我自己写好了,用了SHELL语句,红色的部分可不要.

ON ERROR GOTO Getpath
INPUT "请输入要搜索的文件名:",fname$
[color=FF0000]'temp1$ = "c:\temp\temp1.txt"[/color]
FOR i = 67 TO 90
  disk$ = CHR$(i) + ":\"
  temp2$ = CHR$(i) + ":\temp2.txt"
  OPEN temp2$ FOR OUTPUT AS #1
  PRINT #1, temp2$
  CLOSE #1
  KILL temp2$
  sfile$ = "dir " + disk$ + fname$ + " /s /b /a>>"[color=FF0000] + temp1$[/color]    
  SHELL sfile$     
NEXT i
Getpath:
,以下红色部分把搜索结果赋值给动态数组gpath$的各个元素,可不要。
[color=FF0000]'fline% = 0[/color]
[color=FF0000]'OPEN temp1$ FOR INPUT AS #1[/color]
[color=FF0000]'DO WHILE NOT EOF(1)[/color]
[color=FF0000]'  INPUT #1, tempx$[/color]
[color=FF0000]'  fline% = fline% + 1[/color]
[color=FF0000]'LOOP[/color]
[color=FF0000]'CLOSE #1[/color]
[color=FF0000]'IF fline% < 1 THEN[/color]
[color=FF0000]'  PRINT "在所有分区都找不到指定的文件!"[/color]
[color=FF0000]'  END[/color]
[color=FF0000]'ELSE[/color]
[color=FF0000]'  REDIM gpath$(1 TO fline%)[/color]
[color=FF0000]'  OPEN temp1$ FOR INPUT AS #1[/color]
[color=FF0000]'  FOR i = 1 TO fline%[/color]
[color=FF0000]'  LINE INPUT #1, gpath$(i)[/color]
[color=FF0000]'  PRINT gpath(i)[/color]
[color=FF0000]'  NEXT i[/color]
[color=FF0000]'  CLOSE #1[/color]
[color=FF0000]'  KILL temp1$[/color]
[color=FF0000]'END IF[/color]

END

10 楼

一塌糊涂,
你运行过吗?
你连管道定重向都没弄好,
何来新文件?
你连dir格式都没看过,
就这样就算是"写好了"?

我在你的主题:
"qb中如何使生成的EXE文件支持长文件名?"
那里有写过怎样做的: http://www.programfan.com/club/showbbs.asp?id=77938
虽然做得不好,但起码也是一个思路,
你可以根据实际应用情况作修改的,但怎么改都不会改成上面那个样子.

我来回复

您尚未登录,请登录后再回复。点此登录或注册