Hallo,
ich mal wieder.
Ich versuche, über den Umweg einer Batch-Datei, eine Dateisuche in VBA zu erstellen.
Mein Code so weit, hier versuche ich beispielsweise die Datei gswin64.exe im Verzeichnis "c:\program files" zu finden:
Code:
Function FindFile(Basepath, filename) As String
'Suche Datei "filename" rekursiv im Basisverzeichnis "Basepath"
Dim lngTaskID As Long
Dim myBatch As String
Dim myCommand As String'Hilfskonstrukt: Batchdatei mit dem Where-Befehl
myBatch = Environ("temp") & "\tmp.cmd"
Debug.Print "CMD-Datei: " & myBatch
'Batch-Datei erstellen:
Open myBatch For Output As #1
Print #1, "@echo on"
Print #1, "REM suche " & filename
'der auszuführende Befehl:
Print #1, "where /R """ & Basepath & """ """ & filename & """>""%temp%\gs.txt"""
Print #1, "type ""%temp%\gs.txt"""
Print #1, "Pause"
Close
'Batchdatei ausführen:
lngTaskID = Shell(myBatch, vbNormalFocus)
'Ergebnis-Datei gs.txt auslesen:
'fehlt noch
FindFile= ""
End Function
Sub test()
Dim strdummy As String
strdummy = FindFile("%programfiles%", "gswin64.exe")
End Sub
Der Code läuft so weit, die Batchdatei wird erstellt und ausgeführt- aber die
Ergebnis-Datei gs.txt ist immer leer, die gesuchte Datei wird nicht gefunden.
Wenn ich die erstellte Batchdatei aber manuell ausführe, dann funktioniert sie und findet meine gswin64.exe, das Ergebnis steht dann in der gs.txt
Was mache ich hier falsch?
Noch ne Frage nebenbei: Wieso wird bei der Ausgabe statt der spitzen Klammer > immer ein 1> ausgegeben? Ist mir in anderen Zusammenhängen auch schon aufgefallen. Keine Ahnung, ob das irgendeine Bedeutung hat.
------------------
Klaus
http://www.alko-tech.com | mein Gästebuch
[Diese Nachricht wurde von KMassler am 13. Okt. 2020 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP