Probleme mit Shell

webmaster76

Mitglied
Hallo an alle,

habe da mal wieder ein kleines Problemchen...
Über den Shell-Befehl kann ich ja Dateien aufrufen (z.B. Shell ("test.bat")).

Nun möchte ich mit Shell einen dir-Befehl machen (also Shell("dir *.txt >> c:\test.txt"))

Alledings sagt mit VB, dass die Datei nicht gefunden werden kann. Woran liegt es bzw. wie kann ich dieses Problem lösen?
 
Hi webmaster76,
webmaster76 hat gesagt.:
Bin kein Profi :-(
Hehe, ich doch auch nicht *Selbstbewusst* ;)

Also ich habe aus deiner Beschreibung gelesen, dass du eine Datei öffnen willst. Wobei "dir" für den Pfad steht. Klar, etwas anderes kannst du mit Shell ja auch nicht machen.
Wenn du nun eine Variable(Pfad) hast, mit dem Inhalt "C:\Test.txt", dann müsste dein Code so lauten, damit du sie öffnen kannst:

Code:
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
		"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _
		As String, ByVal lpFile As String, ByVal lpParameters _
		As String, ByVal lpDirectory As String, ByVal nShowCmd _
		As Long) As Long
 
ShellExecute(0, "Open", Pfad, "", Pfad, 1)

Wenn du nun keine Datei öffnen willst, bitte ich um eine genauere Beschreibung :)

Ciao:
Da' Hacker
 
ups, da habe ich mich wohl mißverständlich ausgedrückt, sorry...

Also, ich möchte eine Liste der Dateien in einem Ordner (und dessen Unterordner) erzeugen und diese dann in eine Datei schreiben. In Windows mache ich das ja mit folgenden Befehl im DOS-Fenster:

dir /s /b c:\temp >> c:\liste.txt

d.h. gebe ich das im DOS-Fenster (in der CMD) so als Befehl ein, dann schreibt er mit alle Dateien im Verzeichnis c:\temp (und dessen Unterverzeichnisse) in die Datei c:\liste.txt.

Und genau das möchte ich aus VB machen, wenn der Benutzer einen Button drückt. Geht das?
 
Folgender Code listet alle Verzeichnisse und Dateien im Verzeichnis "c:\" auf (die gefundenen Sachen werden in eine Textbox mit Namen "txtAusgabe" geschrieben):
Code:
Private Sub Auflisten()
	Dim strTemp As String
	strTemp = VBA.Dir("C:\", vbDirectory Or vbHidden Or vbSystem Or vbVolume)
 
	While Len(strTemp) > 0
		If strTemp <> "." And strTemp <> ".." Then Me.txtAusgabe.Text = Me.txtAusgabe.Text & strTemp & vbCrLf
		strTemp = VBA.Dir
	Wend
End Sub
Jetzt brauchst du es statt in eine Textbox zu schreiben nur noch in eine Datei zu schreiben. Dazu gibt es hier bereits genügend Threads, die das behandeln.

Wenn du nur alle *.txt-Dateien aufgelistet haben möchtest, dann musst du "C:\" durch "C:\*.txt" ersetzen.
 
Zuletzt bearbeitet:
Zurück