上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
tdt
註冊時間: 2003-06-14 文章: 12
第 1 樓
|
發表於: 星期六 六月 14, 2003 9:56 pm 文章主題: foxpro在2000裡面的DIR指令不正常 |
|
|
請問一下為何在win2000系統中執行!DIR>dir.txt指令結果,所出現的檔名都是8.3規格,似乎不會辨識中文長檔名!但是在DOS模式下dir指令卻是沒有問題的。如果我要在foxpro中取得所有的檔名列表(不能用list,因為該結果並未分行),應該用什麼指令呢?請高手指點一下吧! |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 2 樓
|
發表於: 星期日 六月 15, 2003 12:05 am 文章主題: |
|
|
dime mfilelist[1]
mtotfile = adir( mfilelist , '*.*')
for i=1 to mtotfile
? mfilelist[i,1]
next _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
tdt
註冊時間: 2003-06-14 文章: 12
第 3 樓
|
發表於: 星期日 六月 15, 2003 9:56 am 文章主題: |
|
|
以前在98中執行下列外部指令就可以很方便的將某一目錄以及該目錄下子目錄中的某一種檔名全部寫入一個檔案中。
! dir *.htm>dir.txt /b/s
結果如下:其中包括了檔名以及各目錄
e:\td2\a1\41.htm
e:\td2\a1\58.htm
e:\td2\a2\e41.htm
e:\td2\a2\e58.htm
e:\td2\a2\law.htm
e:\td2\a3\enshlawen.htm
但即使是用您所提供的指令,卻無法抓到子目錄中的檔案,如果要抓到,我相信並不難,但總是要加一些程式,我很多的程式可能都要改。請問有沒有辦法仍然使foxpro在2000中執行dir指令而可顯示長檔名的方法,好奇怪,在98可以,2000中卻不行!而在2000的C:\視窗下卻又沒問題。感謝提供解答 |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 4 樓
|
發表於: 星期日 六月 15, 2003 5:25 pm 文章主題: |
|
|
因為FOXPRO在WIN2K模式下是使用 c:\winnt\system32\command.com , 而在自己開啟的MSDOS模式是使用 c:\winnt\system32\cmd.exe , 兩者是不一樣的程式, 有兩程方式可以解決你的困擾, 一. copy cmd.exe command.com ( 不是很安全的作法, 二.修改foxrun.pif , 請自己去找到這個檔案, 應該是放在跟vfp6.exe 一起. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
tdt
註冊時間: 2003-06-14 文章: 12
第 5 樓
|
發表於: 星期日 六月 15, 2003 9:12 pm 文章主題: |
|
|
感謝您的回應,可是pif檔案要怎樣製作與修改,我找過網路可是沒找到,以前記得好像有個程式可以處理,很久沒用,怎麼想都想不起來。 |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 6 樓
|
發表於: 星期日 六月 15, 2003 10:27 pm 文章主題: |
|
|
找到那個.pif , 按滑鼠右鍵選內容就可以改了. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
tdt
註冊時間: 2003-06-14 文章: 12
第 7 樓
|
發表於: 星期一 六月 16, 2003 8:22 am 文章主題: |
|
|
謝謝啦。 |
|
回頂端 |
|
 |
sunghsia
註冊時間: 2003-06-13 文章: 52 來自: 台北
第 8 樓
|
發表於: 星期六 十月 30, 2010 8:01 pm 文章主題: |
|
|
* 1. 拷備至*.prg
*-------------------------------------------------------------
* 2. 建一個批次檔 0.BAT , 解決 RUN DIR 無法顯示中文的問題
* 3. 0.BAT 內容為: dir /s/a/b c:\ >c:\000000.txt
dele file c:\000000.txt &&刪除舊的000000.txt檔 (注意0.BAT內000000.txt的所在路徑)
DECLARE INTEGER WinExec in kernel32; &&不要用VFP的 RUN 0.BAT 執行, 要改用 API 呼叫才會顯示中文
STRING,; &&可執行檔
INTEGER &&視窗大小: 1預設 2最小 3最大
= WinExec("0.BAT", 2) && 執行0.BAT , 0.BAT最好能和這個.prg存在同一個目錄, 好管理也不用指定路徑
do while !file("c:\000000.txt") &&等待000000.txt建立完成 (注意0.BAT內的000000.txt路徑)
enddo
wait timeout 2 &&拖一下2秒 (此列最好留著, 這樣下面的 "匯入文字檔" 才能完全匯入)
create cursor tmp (fieldname c(254)) &&建立暫存檔 (注意 254長度,是否不夠長)
append from c:\000000.txt SDF &&匯入文字檔 (注意0.BAT內000000.txt的所在路徑)
brow
* = WinExec("notepad c:\000000.txt", 3) &&檢視 000000.txt 內容 |
|
回頂端 |
|
 |
sunghsia
註冊時間: 2003-06-13 文章: 52 來自: 台北
第 9 樓
|
發表於: 星期六 十月 30, 2010 9:07 pm 文章主題: |
|
|
* 自動化, 不用在去建立批次檔和指定目錄, 只要執行本.prg就可以了
*-----------------------------------------------------------------
d= "c:\" && DIR所要尋找的檔案或目錄 (可改成 GETFILE 或 GETDIR 取得)
p= substr(sys(16) , at(":",sys(16))-1) && 取得本程式的目錄
p= left(p , rat("\",p)-1)
c= fcreate("&p.\0.BAT") && 建立批次檔, 並取得檔案控制碼
if c <0
wait windows "無法建立 0.BAT 批次檔"
RETURN
endif
fputs(c, "dir /s/a/b &d >&p.\000000.txt") && 寫入 0.BAT 內容
fclose(c) &&釋放0.BAT
DECLARE INTEGER WinExec in kernel32; && 不要用VFP的 RUN 0.BAT 執行, 要改用 API 執行才會顯示中文
STRING,; &&可執行檔
INTEGER &&視窗大小: 1預設 2最小 3最大
= WinExec("&p.\0.BAT", 2) && 執行0.BAT
do while !file("&p.\000000.txt") && 等待000000.txt建立完成
enddo
wait timeout 6 && 拖一下2秒 (此列最好留著, 這樣下面的 "匯入文字檔" 才能完全匯入)
create cursor tmp (fieldname c(254)) && 建立暫存檔 (注意 254長度,是否不夠長)
append from &p.\000000.txt SDF && 匯入文字檔
brow
* = WinExec("notepad &p.\000000.txt", 3) && 檢視 000000.txt 內容
dele file &p.\000000.txt && 刪除生成的檔案
dele file &p.\0.BAT && 刪除生成的檔案 |
|
回頂端 |
|
 |
|