.bat Datei öffnen und Parameter übergeben

Hallo Wissende,

ich brauche mal eure Hilfe. Ich beschäftige mich gerade erst mit Visual Basic und habe auch im Archiv nichts gefunden.

Mein Problem: Ich soll eine Oberfläche gestalten, in der in 3 Feldern ein Wert eingegeben wird. Diese Werte sollen dann per Knopfdruck einer .bat Datei übergeben werden, die über die Eingabeaufforderung gestartet wird. Das sieht dann so aus:

F:>Datei.bat Wert1 Wert2 Wert3

Kann mir einer von euch helfen? Wie sähe der Befehl für obige Zeile aus? Die Oberfläche und das restliche drumherum bekomm ich so hin.
Mir wäre fürs erste schon geholfen, wenn ich wüsste,wie ich eine Datei aus VB öffne.

Danke schonmal!!!

Gruß
Mareike

Hallo,

Option Explicit
Dim Filename As String

Private Sub Command1\_Click()
 Dim ff As Long
 Dim zl As String
 ff = FreeFile
 zl = "F:\>Datei.bat " & Wert1 & " " & \_
 Wert2 & " " & Wert3
 Open Filename For Output As #ff
 Print #ff, zl
 Close #ff
End Sub

OK? Ist etwas unklar?

Gruß, Rainer

hallo,

du könntest aber auch diese erzeugte Batch-Datei in Excel starten, dazu gibt es den Shell-Befehl:

Shell(„f:\Datei.bat“)

Bitte daran denken, dass > ist nicht Bestandteil des Datei, bzw. Pfad-Namens.

Viele Grüße

Hallo Rainer,

vielen Dank für deine schnelle Antwort. Ich habe mir deine Lösung mal übers Wochenende angeschaut. Leider funktioniert sie nicht. Zunächst hat er gemeckert, dass der Filename Pfad nicht stimmt. Dann hab ich ihm den Pfad nochmal explizit übergeben. Nun macht er nix.

Leider habe ich vom reinen VisualBasic nicht so die Ahnung. Dennoch danke für deine Hilfe!

Gruß
Mareike

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

vielen Dank für deine schnelle Antwort. Ich habe mir deine
Lösung mal übers Wochenende angeschaut. Leider funktioniert
sie nicht. Zunächst hat er gemeckert, dass der Filename Pfad
nicht stimmt. Dann hab ich ihm den Pfad nochmal explizit
übergeben. Nun macht er nix.

hmmm, Filename ist natürlich nur eine variable, die einen gültigen Pfad und Namen enthalten muß. Beispiel:

Filename = „C:\Programme\Test.bat“

oder Du läßt den Namen eingeben und nimmst als Pfad das Verzeichnis, in dem Das Programm liegt. Den Pfad findest Du dann mit

Filename = App.Path & „\Test.bat“

oder Du verwendest den Commondialog … ich habe keine Ahnung, was Du wie machen möchtset, da gibt es einfach zu viele Möglichkeiten um die richtige zu erraten.

Gruß, Rainer

Hallo Siegfried,

ich arbeite aber leider nicht mit Excel, sondern mit Visual Basic6.
Dennoch danke für deine Antwort. Den Shell-Befehl habe ich auch versucht und komme leider nicht weiter. Dennoch danke!

Gruß
Mareike

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

2.Versuch. :smile:

Nun habe ich das Programm so aufgebaut, daß es ohne Veränderung lauffähig ist, nur macht es nun natürlich nicht ganz, was es soll, ich kenne ja Deine Werte nicht. An Deine Bedürfnisse anpassen mußt Du das Programm schon noch.

Der Code:

Option Explicit
Dim Filename As String
Dim Wert1 As Integer
Dim Wert2 As Integer
Dim Wert3 As Integer

Private Sub Command1\_Click()
Dim ff As Long
Dim zl As String

 Filename = "C:\Test.bat" 'Hier muß Dein Pfad un Name hin

 Wert1 = 3 'Deine Werte solltest Du schon versorgt haben
 Wert2 = 4
 Wert3 = 5

 ff = FreeFile
 zl = "F:\>Datei.bat " & Wert1 & " " & Wert2 & " " & Wert3
 Open Filename For Output As #ff
 Print #ff, zl
 Close #ff
End Sub

… erzeugt im Verzeichnis C:\ eine Datei ‚Test.bat‘ mit folgendem Inhalt:

F:>Datei.bat 3 4 5

War es das, was Di wolltest? Oder sollen zwischen die Zahle noch Kommas? Dann …

zl = "F:>Datei.bat " & Wert1 & „,“ & Wert2 & „,“ & Wert3

… OK?

Gruß, Rainer

1 Like

Hallo Rainer.

Vielen vielen dank für deine Hilfe! Ich habe jetzt verstanden, was du mir gesagt hast. Leider habe ich mich völlig verkehrt ausgedrückt. (Ich wollte nämlich etwas total anderes!) Also darfst du mich jetzt steinigen, verfluchen, etc. :

STOPP! Das reicht!
Also, ich versuche es nochmal:

Ich habe ein schickes Formular zusammengeklickt, in dem ich 3 Werte eingebe. Diese 3 Werte übergebe ich einer bereits bestehenden .bat Datei(, die damit eine Ordnerstruktur und Rechteverwaltung ausführt).

Diese Bat-Datei wird bisher über die Eingabeaufforderung aufgerufen, und zwar so:
F:> datei wert1 wert2 wert3

Mitlerweile habe ich es geschafft (*juchu*), die Eingabeaufforderung zu starten mit shell(„cmd.exe“). Leider kann ich ihr den Befehl „datei wert1 wert2 wert3“ nicht übergeben. Da finde ich keine Lösung.

Ich hoffe ich habe mich nun klarer ausgedrückt.
Danke für deine Hilfe! Finde es immerwieder erstaunlich, wieviel Mühe sich manche User hier geben! Dafür 1 reelles und 100 imaginäre Sternchen!

Grüße
Mareike

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Vielen vielen dank für deine Hilfe! Ich habe jetzt verstanden,
was du mir gesagt hast. Leider habe ich mich völlig verkehrt
ausgedrückt. (Ich wollte nämlich etwas total anderes!) Also
darfst du mich jetzt steinigen, verfluchen, etc. :

*gg* nö, so schlimm ist es nun auch wieder nicht. :smile:

Ich habe ein schickes Formular zusammengeklickt, in dem ich 3
Werte eingebe. Diese 3 Werte übergebe ich einer bereits
bestehenden .bat Datei(, die damit eine Ordnerstruktur und
Rechteverwaltung ausführt).

Diese Bat-Datei wird bisher über die Eingabeaufforderung
aufgerufen, und zwar so:
F:> datei wert1 wert2 wert3

Ach so, Du willst die Datei nicht schreiben sondern ausführen! Das habe ich falsch verstanden.

Mitlerweile habe ich es geschafft (*juchu*), die
Eingabeaufforderung zu starten mit shell(„cmd.exe“). Leider
kann ich ihr den Befehl „datei wert1 wert2 wert3“ nicht
übergeben. Da finde ich keine Lösung.

Du brauchst cmd.exe nicht zu öffnen, Du kannst Dein Batch direkt mit Shell("") starten.

 Dim Zl As String
 Zl = "f:\Datei.bat " & Str(Wert1) & " " & Str(Wert2) & " " & Str(Wert3)
 Shell (Zl)

Ich hoffe ich habe mich nun klarer ausgedrückt.

Ja.

Danke für deine Hilfe! Finde es immerwieder erstaunlich,
wieviel Mühe sich manche User hier geben! Dafür 1 reelles und
100 imaginäre Sternchen!

Danke! :smile: Das ist doch der Spaß an w-w-w. Wenn Niemand helfen würde, würde ich auch keine Hilfe finden, wenn ich welche brauche und das kommt oft genug vor …

Gruß, Rainer

1 Like

Nachtrag Fehler
Hallo,

ja, ja, wenn man sich zu sicher ist …

Shell (Zl)

… ist nicht ganz korrekt, die Klammern stören.

Shell Zl

Das geht besser. :smile: Sorry.

Call Shell (Zl)

hätte auch funktioniert …

Gruß, Rainer

Jetzt haben wirs fast!
Hi Rainer,

Super! Danke! Das ist eigentlich fast zu einfach. Naja, aber wenn man so überhaupt keinen Ansatzpunkt hat, bin ich echt froh über die Hilfe hier.

Also, das funktioniert fast perfekt. Nur stehen leider keine Zahlen in den Werten sondern normale Strings.
Ich werde mich jetzt in meinen schlauen Büchern auf die Suche begeben, wie der entsprechende Befehl XXX(Wert1) heißt.

Vielleicht bin ich diesesmal schneller als du?

Danke und Gruß
Mareike

Du brauchst cmd.exe nicht zu öffnen, Du kannst Dein Batch
direkt mit Shell("") starten.

Dim Zl As String
Zl = "f:\Datei.bat " & Str(Wert1) & " " & Str(Wert2) & " "
& Str(Wert3)
Shell (Zl)

Ich hoffe ich habe mich nun klarer ausgedrückt.

Ja.

Hallo,

Vielleicht bin ich diesesmal schneller als du?

mal sehen, … laß einfach Str() weg … :smile:

 Dim Zl As String
 Zl = "f:\Datei.bat " & Wert1 & " " & Wert2 & " " & Wert3
 Shell Zl

Gruß, Rainer

und ich suche und suche und suche…
… und wunder mich, dass in meinem Buch von Fänlein Fieselschweif nix steht! *grins*

Et klappt, wa! Danke dir und mein Chefe wird froh sein!

Gruß und noch nen schönen Tag!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Et klappt, wa!

wunderbar, dann bis zum nächsten mal.

Gruß und noch nen schönen Tag!

Dir auch!

Gruß, Rainer