0

在一个可视的 foxpro 9 应用程序中,我们使用 filer.fileutils activeX 对象来检索文件夹中所有文件的列表。

这工作了好几年。但是现在我们只从文件夹中获取一些文件,当我们在 Windows 2008 的服务器上运行它时。(文件夹是一个网络位置)当我们从 Windows 7 工作站运行相同的代码时,我们会看到所有文件

在服务器上,我们只收到 .doc 和 .xls 文件,不会返回 .docx 和 .xlsx 文件...

然后我们确实切换了代码以使用 scripting.filesystemobject,但这也只返回 .doc 和 .xls 文件,并且缺少 .docs 和 .xls 文件

fso=createobject("scripting.filesystemobject")
fld=fso.getfolder(lcFolderName)
for each fil in fld.files
   ?"Name Of File: ", fil.name
   ?"Size: ", fil.size
   ?"Date created:", fil.DateCreated
   ?"Last modified:", fil.DateLastModified
next

由于这在大约 2-3 周前停止工作,我们想知道是什么设置或安全更新在服务器上导致了这种情况......

4

2 回答 2

1

Tamar 是对的……而且它已经存在很长时间了。如果您本地化路径的参数以启动并本地化您正在使用的用于数组处理的变量,那么您应该很好。我个人从不尝试使用 SET DEFAULT TO 或 SET PATH TO。下面的这个方法只是接受一个路径,并以 IT 作为基础来遍历目录树。我什至将结果放在光标中供您根据需要使用。如果您想添加自己的用途,甚至可以添加其他列。唯一没有的是创建日期......只是修改日期。

CREATE CURSOR C_DirWalk ;
(   justThePath c(50),;
    TheFile     c(50),;
    TheSize     i,;
    TheDate     d,;
    TheTime     c(8),;
    TheFlags    c(5) )  

walkTheDir( "C:\SomeFolder\SomeSubFolder\" )


PROCEDURE WalkTheDir
    LPARAMETERS justOneDirectory

    */ Make sure it always has the trailing backslash
    justOneDirectory = ADDBS( ALLTRIM( justOneDirectory ))

    LOCAL ARRAY laOneDirPath[1,5]
    LOCAL lnF, lnI
    */ Include any Hidden or Directories...
    lnF = ADIR( laOneDirPath, justOneDirectory + "*.*", "HD" )
    FOR lnI = 1 TO lnF
        INSERT INTO C_DirWalk;
            ( justThePath,;
                TheFile,;
                TheSize,;
                TheDate,;
                TheTime,;
                TheFlags );
            values;
            (   justOneDirectory,;
                laOneDirPath[ lnI, 1],;
                laOneDirPath[ lnI, 2],;
                laOneDirPath[ lnI, 3],;
                laOneDirPath[ lnI, 4],;
                laOneDirPath[ lnI, 5] )


        */ If this was a directory, make a recursive call but tacking on
        */ this path... but do NOT process directories that are
        */ the "." (same directory) or ".." (parent)
        IF      "D" $ laOneDirPath[ lnI, 5] ;
            AND LEN( CHRTRAN( laOneDirPath[ lnI, 1], ".", "" )) > 0
            */ Yes, a valid path OTHER than just "." or ".."
            WalkTheDir( justOneDirectory + laOneDirPath[ lnI, 1] )
        ENDIF 
    ENDFOR 
ENDPROC 
于 2013-06-18T13:48:48.687 回答
0

为什么不使用内置的 ADIR() 函数?它将使用文件夹中所有文件的列表填充数组,或者所有与文件规范匹配的文件。

于 2013-06-17T20:27:30.777 回答