2017-07-31 59 views
0

是否可以在JavaScript中讀取文件名爲Sometext_ddmmyy.xls的文件? 文件名稱每天更改,但日期ddmmyy是該星期或之前的隨機日期。 但是文件的路徑永遠不會改變。 你能幫助JavaScript代碼來讀取文件嗎?在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,隨機文本_ddmmyy.xls,隨機文本_ddmmyy.xls,並將在同一臺服務器上使用腳本進行訪問。

+0

幫我理解:你想訪問一個文件,這個文件只存在於文件夾中,沒有其他文件會永遠存在於同一個位置,文件名會每天都改變。它是否正確? – AGE

+0

@AGE不,該文件夾不僅僅是這個文件,它將是不同的名稱,就像sometext_ddmmyy.xls randomtext_ddmmyy.xls等等!是的,我想一次訪問一個文件!是的,文件名稱每天都在改變! –

+0

這些文件是否存在本地或服務器? – AGE

回答

0

隨着FileSystemObject你可以用正則表達式過濾的文件名,並找到最新的過濾的文件添加到文件夾,如下所示:

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匹配。

+1

這工作就像一個魅力!非常感謝! –

+0

是否可以在getLatestFile(path_to_folder,/"FilenamefromVariable"_\d{6}\.xls$//)中將文件名作爲變量傳遞;而不是在腳本運行之前預先定義的「sometext」,我們希望將它從變量中傳遞給另一個文件。我可以在變量中獲取文件名的值,但需要知道是否可以將它與正則表達式一起傳遞到函數中? –

+0

@vikrammohan'filter'是一個RegExp對象,正如我在答案中所說的那樣,它是「_literal or constructed_」,即您可以在調用'getLatestFile'之前根據需要創建RegExp。有關更多詳細信息,請參見[RegExp構造函數](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)。 – Teemu