我目前正在嘗試獲取包含多個子目錄和檔案的 128.5GB 檔案夾中所有檔案的最后修改日期。然而,每當腳本運行時,它幾乎會使用服務器上的所有記憶體。(我認為這是因為它試圖在將所有資料輸出到 .csv 檔案之前將其放入記憶體中)。有沒有一種方法可以在不使用服務器上的所有記憶體的情況下將資料輸出到 .csv 檔案中。請找到我的以下腳本:-
$results = Get-ChildItem -Force -Recurse -File -Path "C:\inetpub\wwwroot\" | Sort LastWriteTime -Descending | Select-Object FullName, LastWriteTime
$results | Export-Csv "C:\Users\serveradmin\Documents\dates.csv" -notype
uj5u.com熱心網友回復:
Powershell 可能會占用大量記憶體并且速度很慢......所以我用 python 給你寫了一個腳本。我在我的 mac 上測驗了它,很有魅力。我在劇本上留下了筆記。只需修改要掃描的檔案夾路徑和要保存 csv 檔案的位置。它會更快,并且使用更少的記憶體:o)
#Import Python Modules
import os,time
import pandas as pd
#Function to Scan files
def get_information(directory):
file_list = []
for i in os.listdir(directory):
a = os.stat(os.path.join(directory,i))
file_list.append([i,time.ctime(a.st_atime),time.ctime(a.st_ctime),time.ctime(a.st_mtime)]) #[file,most_recent_access,created]
return file_list
#Enter Folder Path To Be Scanned
flist = get_information("/Users/username/FolderName1/FolderName2/data")
#print(flist)
#Build DataFrame Table
df = pd.DataFrame(flist)
#Insert DataFrame Table Colimns
df.columns = ['file name', 'last access time', 'last change time', 'last modification time']
#Print output as test
#print(df)
#Bulid Filepath for output
src_path ="/Users/username/FolderName1/"
csvfilename = "output.csv"
csvfile = src_path csvfilename
#Export to CSV
df.to_csv(csvfile, index=False)
uj5u.com熱心網友回復:
值得一提的是,我在 8 分鐘內成功地使用了硬碟驅動器上的所有 180 萬個檔案。
# 5 min
Get-ChildItem -Force -Recurse -File -ea 0 |
Select-Object @{n='lastwritetime';
e={$_.lastwritetime.tostring('yyyy MM dd HH mm ss')}}, fullname |
export-csv sort.csv
# 3 min
import-csv sort.csv | Sort LastWriteTime -Descending | export-csv sort2.csv
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/370380.html
