dw: Datei aus einem Ordner löschen

hi,
wie kann man mit asp oder js eine bestimmte datei(bild) aus einem ordner löschen?

schon ma danke!!

  1. Hallo!

    wie kann man mit asp oder js eine bestimmte datei(bild) aus einem ordner löschen?

    Mit der delete-Methode des filesystemobject, also
    object.Delete (force)
    Wenn force true ist, dann wird auch gelöscht wenn das Objekt read-only ist. Default für force ist false.

    Beste Grüße
    Viennamde

    1. Hallo,

      ich hab das jetzt so gemacht, doch ich bekomme den Fehler:

      Kompilierungsfehler in Microsoft VBScript- Fehler '800a0415'

      Literalkonstante erwartet

      /Mailsystem/ownhome_bearbeiten.asp, line 27

      const extension = "/" & Request.QueryString("BName") & ".*"
      -----------------------------------------------------------^

      und das ist der code:

      ...
      if Request.QueryString("delete") <> "" then
       const delete = FALSE
       const extension = "" & Request.QueryString("BName") & ".*"   <--ZEILE 27
       const conSourcePath = "users"
       strPhysSourcePath = Server.MapPath(conSourcePath) & extension
       set FileObjekt = Server.CreateObject("Scripting.FileSystemObject")
       FileObjekt.DeleteFile strPhysSourcePath
      end if
      ...

      was an dem code falsch, könnt ihr mir sagen was ich machen soll damit es funktioniert...?

      1. Hallo!

        /Mailsystem/ownhome_bearbeiten.asp, line 27

        const extension = "/" & Request.QueryString("BName") & ".*"
        -----------------------------------------------------------^

        Das bedeutet, daß Du eine Konstante nur so bauen kannst:
        1. const bla = "Blauwurst"
        2. const bla = "Blauwurst" & vblf
        Aber nicht:
        const bla = "Blauwurst" & blabla

        ... Also keine Variablen in eine Konstante reintung.

        Beste Grüße
        Viennamade

        1. ... Also keine Variablen in eine Konstante reintung.

          Wie bekomm ich das dann hin, in einem ordner wo 100te von Dateien sind nur eine zu löschen. ich will immer die datei löschen die gerade im "Request.QueryString("BName")" ist und egal welche endung sie hat, also ".*"

          1. ... Also keine Variablen in eine Konstante reintung.
            Wie bekomm ich das dann hin, in einem ordner wo 100te von Dateien sind nur eine zu löschen. ich will immer die datei löschen die gerade im "Request.QueryString("BName")" ist und egal welche endung sie hat, also ".*"

            Hallo,
            anhand Deines Beispielcodes erkenne ich nirgends, wofür die (falsche) Konstante delete eigentlich ist. Wie auch immer.

            Zuerst mußt Du mal _alle_ Dateien eines Ordners durchlaufen können. Ein Beispiel (das untere der beiden ist VBScript):
            http://msdn.microsoft.com/library/en-us/script56/html/jscolfiles.asp
            Du brauchst aber einen 2 Funktionsparameter um die zu löschende Datei zu übergeben, also:
            Function ShowFolderList(folderspec,filetodelete)

            So, und innerhalb der for/each-Schleife vergleichst Du, ob die aktuelle Datei (f1.name) dem Muster "zulöschendeDatei.*" entspricht.
            Wenn ja, dann: Schuß!

            Beste Grüße
            Viennamade

            1. Danke erstma für deine Hilfe!!!

              aber irgendwie versteh ich das noch nicht ganz, ich hab jetzt den code und so, nur es funktioniert immer noch nicht, passiert einfach nichts. was ist da los?

              jetziger code:

              if Request.QueryString("delete") <> "" then

              [VBScript]
              filetodelete = Request.QueryString("BName")
              const folderspec = "users"
              Function ShowFolderList(folderspec,filetodelete)
                 Dim fso, f, f1, fc, s
                 Set fso = CreateObject("Scripting.FileSystemObject")
                 Set f = fso.GetFolder(folderspec)
                 Set fc = f.Files
                 For Each f1 IN fc
                    s = s & f1.Name

              if s = (Request.QueryString("BName")) then              |
                const conSourcePath = "users"                    |
                strPhysSourcePath = Server.MapPath(conSourcePath) | Datei löschen?
                fso.DeleteFile strPhysSourcePath                  |
                 end if                                                  |

              s = s & "<BR>"
                 Next
                 ShowFolderList = s
              End Function

              end if

              oder hab ich jetzt beim code etwas falsch gemacht?

              MFG dw

              1. Danke erstma für eure Hilfe!!!

                aber irgendwie versteh ich das noch nicht ganz, ich hab jetzt den code und so, nur es funktioniert immer noch nicht, passiert einfach nichts. was ist da los?

                jetziger code:

                if Request.QueryString("delete") <> "" then

                <%
                [VBScript]
                filetodelete = Request.QueryString("BName")
                const folderspec = "users"
                Function ShowFolderList(folderspec,filetodelete)
                   Dim fso, f, f1, fc, s
                   Set fso = CreateObject("Scripting.FileSystemObject")
                   Set f = fso.GetFolder(folderspec)
                   Set fc = f.Files
                   For Each f1 IN fc
                      s = s & f1.Name

                if s = (Request.QueryString("BName")) then       |
                  const conSourcePath = "users"                    |
                  strPhysSourcePath = Server.MapPath(conSourcePath) | Datei löschen?
                  fso.DeleteFile strPhysSourcePath                  |
                   end if                                           |

                s = s & "<BR>"
                   Next
                   ShowFolderList = s
                End Function

                end if
                %>

                oder hab ich jetzt beim code etwas falsch gemacht?

                MFG dw

                1. Hallo,

                  jetziger code:

                  if Request.QueryString("delete") <> "" then

                  <%
                  [VBScript]
                  filetodelete = Request.QueryString("BName")
                  const folderspec = "users"
                  Function ShowFolderList(folderspec,filetodelete)
                     Dim fso, f, f1, fc, s
                     Set fso = CreateObject("Scripting.FileSystemObject")
                     Set f = fso.GetFolder(folderspec)
                     Set fc = f.Files
                     For Each f1 IN fc

                  Hier: f1 ist die aktuelle Datei der Schleife. Also ist in f1.Name der Name der Datei drinnen, den mußt Du mit filetodelete vergleichen.

                  s = s & f1.Name

                  Diese Zeile bringt Dir nichts, sie dient im MS-Beispiel nur im Anschluß die Dateistruktur des Ordners auszugeben.

                  if s = (Request.QueryString("BName")) then       |
                    const conSourcePath = "users"                    |
                    strPhysSourcePath = Server.MapPath(conSourcePath) | Datei löschen?
                    fso.DeleteFile strPhysSourcePath                  |
                     end if                                           |

                  s = s & "<BR>"
                     Next
                     ShowFolderList = s
                  End Function

                  end if
                  %>

                  oder hab ich jetzt beim code etwas falsch gemacht?

                  Ein korrektes Beispiel:
                  Ein Sub, welches eine Funktion "ShowFolderList" aufruft. Als Parameter werden dieser Funktion die zu löschende Datei "styleswitcher.js" und der Ordner übergeben indem sich die Datei befindet "d:\fbn".

                  Sub x()
                  d = ShowFolderList("d:\fbn", "styleswitcher.js")
                  End Sub

                  Und jetzt die Funktion:
                  Function ShowFolderList(folderspec, FileToDelete)
                     Dim fso, f, f1, fc, s
                     Set fso = CreateObject("Scripting.FileSystemObject")
                     Set f = fso.GetFolder(folderspec)
                     Set fc = f.Files
                     For Each f1 In fc
                  ^^^^ Durchlaufe alle Dateien im Ordner
                     If f1.Name = FileToDelete Then
                  ^^^^ Wenn aktueller Dateiname gleich Name der zu löschenden Datei
                      Debug.Print f1.Name
                  ^^^^ Drucke den Namen ins Debug-Fenster (du mußt das durch den Löschbefehl ersetzen.
                     End If

                  Next
                     ShowFolderList = s
                  End Function

                  Beste Grüße
                  Viennamade

                  1. Sub x()
                    d = ShowFolderList("d:\fbn", "styleswitcher.js")
                    End Sub

                    Und jetzt die Funktion:
                    Function ShowFolderList(folderspec, FileToDelete)
                       Dim fso, f, f1, fc, s
                       Set fso = CreateObject("Scripting.FileSystemObject")
                       Set f = fso.GetFolder(folderspec)
                       Set fc = f.Files
                       For Each f1 In fc
                    ^^^^ Durchlaufe alle Dateien im Ordner
                       If f1.Name = FileToDelete Then
                    ^^^^ Wenn aktueller Dateiname gleich Name der zu löschenden Datei
                        Debug.Print f1.Name
                    ^^^^ Drucke den Namen ins Debug-Fenster (du mußt das durch den Löschbefehl ersetzen.
                       End If

                    Next
                       ShowFolderList = s
                    End Function

                    Danke, aber ich habs jetzt so gelöst:

                    const path="users"
                    path2 = Server.MapPath(path)
                    filetodelete = Request.QueryString("BName")
                    set FolderObjekt = CreateObject("Scripting.FileSystemObject")
                    set ListFolder = FolderObjekt.GetFolder(path2)
                    For Each FileName IN ListFolder.Files
                      if FileName.Name = filetodelete then
                      FileName.Delete
                      end if
                    Next

                    ..weil er bei dem obigen code in die function reinging, nur jetzt kann ich ihm nicht sagen das er die datei löschen soll: "diezulöschendedatei.*" sondern nur: "diezulöschendedatei.jpg" kann man das irgendwie hinbekommen? das die extension egal ist?

                    1. DANKE für dein HILFE!!

                      ..weil er bei dem obigen code in die function reinging, nur jetzt kann ich ihm nicht sagen das er die datei löschen soll: "diezulöschendedatei.*" sondern nur: "diezulöschendedatei.jpg" kann man das irgendwie hinbekommen? das die extension egal ist?

                      hab schon hinbekommen, hab einfach gesagt das man "jpg" und "gif" Dateien hochladen kann, also zum löschen brauch ich dann nur noch zwei konstanten:

                      const extension1 = ".jpg" <-- 1. Konstante
                      const extension2 = ".gif" <-- 2. Konstante
                      const path="users"
                      path2 = Server.MapPath(path)
                      filetodelete1 = Request.QueryString("BName") & extension1
                      filetodelete2 = Request.QueryString("BName") & extension2
                      set FolderObjekt = CreateObject("Scripting.FileSystemObject")
                      set ListFolder = FolderObjekt.GetFolder(path2)
                      For Each FileName IN ListFolder.Files
                        if FileName.Name = filetodelete1 or FileName.Name = filetodelete2 then <-- if 1. konstante oder 2. konstante then
                        FileName.Delete
                        end if
                      Next