是否可以在JavaScript中读取文件名为Sometext_ddmmyy.xls的文件? 文件名每天更改,但日期ddmmyy是该周或之前的随机日期。 但文件的路径永远不会改变。 你能帮忙用JavaScript编写代码来读取文件吗?
代码:
var filename = /^path\\sometext_.*.xls$/;
....
var neobjectexcel = new ActiveXObject("Excel.Application");
var sheet = neojectexcel.Workbooks.Open(filename).ActiveSheet;
...
我使用了正则表达式,但我收到了“抱歉,我们找不到/^path\sometext_.*.xls$/它是否可能被移动,重命名或删除?”错误!
即使是正则表达式/^path\\sometext_\d\d\d\d\d\d.xls$/
也会出现同样的错误。
还试过\ d +而不是\ d \ d \ d \ d \ d \ d不起作用。 请帮忙!
更新:该文件将与服务器上的文件夹以及类似名称的其他文件一起使用,例如sometext_ddmmyy.xls randomtext_ddmmyy.xls randomothertext_ddmmyy.xls,并将在同一服务器上使用脚本访问。
答案 0 :(得分:0)
使用FileSystemObject
,您可以使用RegExp过滤文件名,并找到添加到文件夹中的最新过滤文件,如下所示:
function getLatestFile (path, filter) {
var fileIO = new ActiveXObject('Scripting.FileSystemObject'),
folder = fileIO.GetFolder(path), // Get a folder object
files = new Enumerator(folder.files), // Create files collection
latest = 0,
file, date, isTargetFile, temp, target;
while (!files.atEnd()) { // Iterate files collection
file = files.item(); // Get a file from the collection
temp = new String(file); // Convert a file object to string
isTargetFile = filter.test(temp); // Filter the filename
date = new Date(file.DateCreated).getTime(); // Get the creation date of the file
if (isTargetFile && date > latest) { // Check if this file passed the filter and is newer than the previous filter-passed file
target = temp;
latest = date;
}
files.moveNext(); // Continue iteration
}
return target;
}
您的案例的示例调用将是:
var filename = getLatestFile(path_to_folder, /sometext_\d{6}\.xls$/);
参数:path
=搜索文件的文件夹的路径。 filter
=用于过滤文件名的RegExp对象(文字或构造)。创建RegExp时,请注意转换后的文件对象(temp
)使用反斜杠作为文件夹分隔符,但可以创建RegExp以仅过滤文件名。如果函数返回undefined
,则没有文件名与RegExp匹配。