Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Dateien und Laufwerke

Dateien und Ordner suchen

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.Mitgliedhhr 03.10.2020

Hier wird der Versuch gemacht, in einem Konsolenprogramm Pfadangaben zu verarbeiten, die sämtliche Zeichen enthalten dürfen, die in Windows erlaubt sind.
Dafür wird die Zeichentabelle von Windows verwendet. Nur für die Print-Anweisung wird die OEM-Tabelle eingeschaltet.

CHCP:

#Include "windows.bi" ' GetACP, GetOEMCP

Print "OEM Code Page: ";GetOEMCP
Print "ANSI Code Page: ";GetACP

Print String(20,"-")

Dim As String searchstring,path,pathname,_name
Dim As Byte result
Dim As Integer attribute

Shell "CHCP " & Str(GetACP) & " > NUL"

Print "Zu durchsuchenden Pfad eingeben: ";
Line Input path
path = Trim(path,Any Chr(32,34))
Shell "CHCP " & Str(GetOEMCP) & " > NUL"
Print Wstr(path)
Shell "CHCP " & Str(GetACP) & " > NUL"

Print

Print "Gesamter oder Teil des Namens: ";
Line Input searchstring
searchstring = Trim(searchstring,Any Chr(32,34))
Shell "CHCP " & Str(GetOEMCP) & " > NUL"
Print Wstr(searchstring)
Shell "CHCP " & Str(GetACP) & " > NUL"
searchstring = Lcase(searchstring)

Print String(20,"-")

Open Pipe "DIR /B /S " & Chr(34) & path & Chr(34) For Input As #1
   Do Until Eof(1)
      Line Input #1,pathname
      _name = Dir(pathname,&hFF,attribute)
      _name = Lcase(_name)
      If Instr(_name,searchstring) > 0 Then
         Shell "CHCP " & Str(GetOEMCP) & " > NUL"
         If Bit(attribute,4) = 0 Then
            Print "Datei:"
            Print Wstr(pathname)
         Else
            Print "Ordner:"
            Print Wstr(pathname)
         End If
         Shell "CHCP " & Str(GetACP) & " > NUL"
         result = 1
         Print
      End If
   Loop
Close #1

Shell "CHCP " & Str(GetOEMCP) & " > NUL"
If result = 0 Then Print Wstr("Es wurde keine Übereinstimmung gefunden.")
Print
Print "Ende mit beliebiger Taste..."

Sleep
End 'findfile.bas
'

SetConsoleCP, SetConsoleOutputCP:

#Include "windows.bi" ' GetACP, GetOEMCP, SetConsoleOutputCP, SetConsoleCP

Print "OEM Code Page: ";GetOEMCP
Print "ANSI Code Page: ";GetACP

Print String(20,"-")

Dim As String searchstring,path,pathname,_name
Dim As Byte result
Dim As Integer attribute

SetConsoleOutputCP(GetACP)
SetConsoleCP(GetACP)

Print "Zu durchsuchenden Pfad eingeben: ";
Line Input path
path = Trim(path,Any Chr(32,34))
SetConsoleOutputCP(GetOEMCP)
Print Wstr(path)
SetConsoleOutputCP(GetACP)

Print

Print "Gesamter oder Teil des Namens: ";
Line Input searchstring
searchstring = Trim(searchstring,Any Chr(32,34))
SetConsoleOutputCP(GetOEMCP)
Print Wstr(searchstring)
SetConsoleOutputCP(GetACP)
searchstring = Lcase(searchstring)

Print String(20,"-")

Open Pipe "DIR /B /S " & Chr(34) & path & Chr(34) For Input As #1
   Do Until Eof(1)
      Line Input #1,pathname
      _name = Dir(pathname,&hFF,attribute)
      _name = Lcase(_name)
      If Instr(_name,searchstring) > 0 Then
         If Bit(attribute,4) = 0 Then
            Print "Datei:"
            SetConsoleOutputCP(GetOEMCP)
            Print Wstr(pathname)
            SetConsoleOutputCP(GetACP)
         Else
            Print "Ordner:"
            SetConsoleOutputCP(GetOEMCP)
            Print Wstr(pathname)
            SetConsoleOutputCP(GetACP)
         End If
         result = 1
         Print
      End If
   Loop
Close #1

SetConsoleOutputCP(GetOEMCP)
If result = 0 Then Print Wstr("Es wurde keine Übereinstimmung gefunden.")
Print
Print "Ende mit beliebiger Taste..."

'SetConsoleCP(GetOEMCP)
Sleep
End 'findfile.bas
'

Dank an nemored und grindstone:
Externer Link!https://forum.qbasic.at/viewtopic.php?p=110592&sid=902b9adebcfc5d8d8f8bf92947ae5426#110592


Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 21.09.2020 von Mitgliedhhr angelegt.
  • Die aktuellste Version wurde am 03.10.2020 von Mitgliedhhr gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen