none
vbscript Dateityp von Ordner wird nicht ausgegeben RRS feed

  • Frage

  • Hallo alle zusammen,

    leider habe ich kein passendes Forum gefunden.

    Wir möchten bestimme Dateitypen bei einer Operation ausschließen. Dazu haben wir das folgende Skript erstellt. Allerdings erkennt er den Dateityp nur, wenn in den Ordneroptionen vom Windows-Explorer die Dateitypen eingeblendet sind.

    ----

    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace("C:\abc\")

    For Each varName In objFolder.Items
                  intColumn = 1
                  'Ist es eine Excel Datei?
                   If Right(varName, 4) <> "xlsx" Then GoTo Datei_Go

    'Operiere.................

    Datei_Go:
        Next
        Wend

    ----

    Welche Klasse kann die Dateitypen auch dann erkennen, wenn sie in den Ordneroptionen ausgeblendet sind. Hilft dabei die Klasse system io file ? Und wie sieht ein Beispiel aus?

    Vielen Dank!

    Mittwoch, 25. November 2015 15:54

Antworten

  • > Wie wäre denn der Weg über Scriptin.FileSystemObject?
     
    Möchtest Du was lernen oder eine fertige Lösung?
     
     
    Fertig:
     
    'Set objShell = CreateObject("Shell.Application")
    'Set objFolder = objShell.Namespace("C:\abc\")
     
    Set objFSO = CreateObject( "Scripting.FileSystemObject" )
    Set objFolder = objFSO.GetFolder( "C:\abc" )
     
    For Each File In objFolder.Files
                  intColumn = 1
                  'Ist es eine Excel Datei?
                   If Right( File.Name, 4 ) <> "xlsx" Then GoTo Datei_Go
     
    Witzigerweise haben File-Objekte keine Eigenschaft "Extension", sondern
    nur "Type" - aber da kommt der Beschreibungstext raus, den auch der
    Explorer anzeigt, hilft hier also nicht.
     
    Wobei:
     
    If InstrRev( File.Name, "xlsx", -1, vbTextCompare ) = 0 Then Goto Datei_Go
     
    wäre besser, da case-insensitiv.
     
    • Als Antwort markiert dasichs Donnerstag, 26. November 2015 11:25
    Mittwoch, 25. November 2015 17:26

Alle Antworten

  • > Set objShell = CreateObject("Shell.Application")
     
    Warum gehst Du den Weg über Shell.Application statt über
    Scripting.FileSystemObject? :-))
     
    Mittwoch, 25. November 2015 16:34
  • Das Script war schon so ;-)

    Wie wäre denn der Weg über Scriptin.FileSystemObject?

    Mittwoch, 25. November 2015 16:51
  • > Wie wäre denn der Weg über Scriptin.FileSystemObject?
     
    Möchtest Du was lernen oder eine fertige Lösung?
     
     
    Fertig:
     
    'Set objShell = CreateObject("Shell.Application")
    'Set objFolder = objShell.Namespace("C:\abc\")
     
    Set objFSO = CreateObject( "Scripting.FileSystemObject" )
    Set objFolder = objFSO.GetFolder( "C:\abc" )
     
    For Each File In objFolder.Files
                  intColumn = 1
                  'Ist es eine Excel Datei?
                   If Right( File.Name, 4 ) <> "xlsx" Then GoTo Datei_Go
     
    Witzigerweise haben File-Objekte keine Eigenschaft "Extension", sondern
    nur "Type" - aber da kommt der Beschreibungstext raus, den auch der
    Explorer anzeigt, hilft hier also nicht.
     
    Wobei:
     
    If InstrRev( File.Name, "xlsx", -1, vbTextCompare ) = 0 Then Goto Datei_Go
     
    wäre besser, da case-insensitiv.
     
    • Als Antwort markiert dasichs Donnerstag, 26. November 2015 11:25
    Mittwoch, 25. November 2015 17:26
  • Genial und vielen Dank! Über diese Klasse funktioniert es und auch der Hinweis mit dem case-insensitiv ist sehr hilfreich.

    Eine fertige Lösung und etwas lernen sind beides meine Anliegen gewesen und dabei hast du mir geholfen :-)

    Donnerstag, 26. November 2015 11:24
  • > Eine fertige Lösung und etwas lernen sind beides meine Anliegen gewesen
    > und dabei hast du mir geholfen :-)
     
    Gern geschehen :)
     
    Donnerstag, 26. November 2015 11:33