שלח תשובה

זירת השאלות

627
צפיות
16
תשובות

שלום לכולם, אני צריך עזרה אם FSO

,‏ 11 בספטמבר, 2005

למה אני מקבל שגיאה כאשר אני מציב את השורה הבאה
Set Drive = FSO.GetDrive(FSO.GetDriveName(Path))

להנ"ל הקוד המלא:

Dim FSO         ' הגדרת האוביקט הראשי
Dim Drive         ' הגדרת האוביקט של שימוש דריברים שזה אות הכונן
Dim Drives         ' הגדרת האוביקט של התקנים
Dim Folder         ' הגדרת אוביקט לשימוש בתיקיות
Dim Files         ' הגדרת אוביקט הקבצים
Dim File         ' הגדרת אוביקט הקובץ
Dim SubFolders     ' הגדרת תת התיקיות
Dim SubFolder    ' הגדרת התת תיקיה

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set Drive = FSO.GetDrive(FSO.GetDriveName(Path))
Set Drives = FSO.Drives
Set Folder = FSO.GetFolder(Server.MapPath("/"))
Set Files = Folder.Files
Set SubFolders = Folder.SubFolders

Set Drive = Nothing
Set Drives = Nothing
Set Files = Nothing
Set SubFolders = Nothing
Set Folder = Nothing
Set FSO = Nothing


למדתי את FSO דרך האתר המצוין הזה..

תגיות:

16 תשובות

  1. somebody הגיב:

    מוטי אנא ישר את הקוד שמאלה+הצג א…
    את השגיאה שמתקבלת.

  2. Moty_p הגיב:

    סליחה…
    למה אני מקבל שגיאה כאשר אני מציב את השורה הבאה

    Set Drive = FSO.GetDrive(FSO.GetDriveName(Path))

    להנ"ל הקוד המלא:


    Dim FSO         ' הגדרת האוביקט הראשי
    Dim Drive         ' הגדרת האוביקט של שימוש דריברים שזה אות הכונן
    Dim Drives         ' הגדרת האוביקט של התקנים
    Dim Folder         ' הגדרת אוביקט לשימוש בתיקיות
    Dim Files         ' הגדרת אוביקט הקבצים
    Dim File         ' הגדרת אוביקט הקובץ
    Dim SubFolders     ' הגדרת תת התיקיות
    Dim SubFolder    ' הגדרת התת תיקיה

    Set FSO = Server.CreateObject("Scripting.FileSystemObject")
    Set Drive = FSO.GetDrive(FSO.GetDriveName(Path))
    Set Drives = FSO.Drives
    Set Folder = FSO.GetFolder(Server.MapPath("/"))
    Set Files = Folder.Files
    Set SubFolders = Folder.SubFolders

    Set Drive = Nothing
    Set Drives = Nothing
    Set Files = Nothing
    Set SubFolders = Nothing
    Set Folder = Nothing
    Set FSO = Nothing

    וזה השגיאה
    סוג שגיאה:
    ‏‏שגיאת זמן ריצה של Microsoft VBScript (0x800A0005)
    ‏‏ארגומנט או קריאה לפרוצדורה לא חוקיים
    /fso.asp, line 13

    וכמובן שורה 13 זאת השורה הראשונה שהצגתי

  3. Moty_p הגיב:

    תודה, שגיאה חדשה כאת
    למה אני מקבל שגיאה הקוד הנ"ל


    Response.Write ("שטח פנוי: " & FormatNumber(Drive.AvailableSpace/1024,0) & "KB")

    והשגיאה
    סוג שגיאה:
    ‏‏שגיאת זמן ריצה של Microsoft VBScript (0x800A01A8)
    ‏‏דרוש אובייקט: "
    /fso.asp, line 72

    הקוד המלא:


    <%@ Language="VBScript" CodePage="1255"%>
    <html dir="rtl">
    <%
    Dim FSO         ' הגדרת האוביקט הראשי
    Dim Drive         ' הגדרת האוביקט של שימוש דריברים שזה אות הכונן
    Dim Drives         ' הגדרת האוביקט של התקנים
    Dim Folder         ' הגדרת אוביקט לשימוש בתיקיות
    Dim Files         ' הגדרת אוביקט הקבצים
    Dim File         ' הגדרת אוביקט הקובץ
    Dim SubFolders     ' הגדרת תת התיקיות
    Dim SubFolder    ' הגדרת התת תיקיה

    Set FSO = Server.CreateObject("Scripting.FileSystemObject")
    Set Drive = FSO.GetDrive(FSO.GetDriveName("D:"))

    Response.Write ("שטח פנוי: " & FormatNumber(Drive.AvailableSpace/1024,0) & "KB")
    Response.Write Drive.DriveLetter
    Response.Write Drive.DriveType
    Response.Write Drive.FileSystem
    Response.Write "שטח פנוי: " & FormatNumber(Drive.FreeSpace/1024,0) & "MB"
    Response.Write Drive.IsReady
    Response.Write Drive.Path
    Response.Write Drive.RootFolder
    Response.Write Drive.SerialNumber
    Response.Write Drive.ShareName
    Response.Write FormatNumber(Drive.TotalSize/1024,0) & "MB"
    Response.Write Drive.VolumeName
    %>

    </html>
    <%
    Set Drive = Nothing
    Set Drives = Nothing
    Set Files = Nothing
    Set SubFolders = Nothing
    Set Folder = Nothing
    Set FSO = Nothing
    %>

  4. BuildHome הגיב:

    השורה נראית לי תקינה
    מה קורה אם אתה מסיר אותה? יש שגיאה על השורה אחריה?

    נ.ב: מומלץ לשנות את הצגת השגיאה לאנגלית.

  5. זהר פלד הגיב:

    מאוד מוזר. הקוד הזה עובד אצלי יופי.
    תנסה לכתוב לו Response.write על מחרוזת קבועה לפני שאתה כותב את הנתונים של הכונן:


    Set FSO = Server.CreateObject("Scripting.FileSystemObject")
    Set Drive = FSO.GetDrive(FSO.GetDriveName("D:"))

    Response.write "bla bla bla <br>"
    Response.Write ("שטח פנוי: " & FormatNumber(Drive.AvailableSpace/1024,0) & "KB")
    Response.Write Drive.DriveLetter

    יכול להיות שהשגיאה היא על Response, אבל אני בספק. אם תקבל את השגיאה על השורה שהוספנו עכשיו, אז היא באמת על ה Response…

  6. Moty_p הגיב:

    בהחלט מוזר מאוד.
    הבעיה היא סדר שאני מציב את הקוד הנ"ל


    Response.Write Drive.DriveLetter
    Response.Write ("שטח פנוי: " & FormatNumber(Drive.AvailableSpace/1024,0) & "KB")

    בראש הדף אני לא מקבל שגיאה אבל שאני מציב בסוף הדף אני אכן מקבל שגיאה
    וזה באמת מוזר כי אני עברתי על הקוד ולא סגרתי את האוביקט לפנאי הזמן או משהוא

    תודה בכל אופן, אני משרשר כאן עוד הודעה חדשה,
    אני רוצה לבדוק משקל הקובץ ב MB במקום KB
    ככה זה של KB


    Response.Write "גודל קובץ"&FormatNumber(File.Size/1024,0)&"KB <br />"

    איך אני צריך לרשום כדי למדוד על ידי MB..?

  7. Moty_p הגיב:

    אוקי אני משרשר כאן שאלה חדשה
    אני רוצה להציג את השם של קובץ (דף) שהגולש נמצא בוא כאת
    דרך FSO
    אבל הבעיה היא שאני צריך להגדיר את זה


    Set File = FSO.GetFile("D:InetpubwwwrootDefault.asp")

    וכמו שאתם רואים זה הנתיב המלא
    זה כמובן בעיה כי אני לא רוצה לרשום את הנתיב המלא אלא רק
    Default.asp
    ואז זה לא עובד…
    כיצד ניתן לתקן זאת?

    תודה מראש..

  8. BuildHome הגיב:

    תשובה
    נסה כך:
    Set File = FSO.GetFile(Server.MapPath("Default.asp"))

  9. BuildHome הגיב:

    תשובה
    תחלק ב-1024 ואת התוצאה תחלק שוב ב-1024.

  10. Moty_p הגיב:

    אממ לא ממש פועל
    לא הכי עובד


    Response.Write "גודל קובץ"&FormatNumber(File.Size/1024,0)/1024&"MB <br />"
    או ככה
    Response.Write "גודל קובץ"&FormatNumber(File.Size/1024,0/1024)&"MB <br />"

    כי אני רואה 00023455 MB
    יש דרך אחרת?

  11. BuildHome הגיב:

    לא עשית טוב
    FormatNumber((File.Size/1024)/1024,0)

    אמור לעבוד…

שלח תשובה