externes Programm mit ausgelesenen Dateien nutzen

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Snaptu.

    externes Programm mit ausgelesenen Dateien nutzen

    Hallo,

    ich habe ein Programm geschrieben, welches Dateien aus einem Ordner nach Dateiendung ausliest und in einen Bearbeitungsordner verschiebt. Es werden also nur Dateien mit der von mir gewollten Endung verschoben und alle anderen unberührt gelassen. Dies funktioniert soweit.

    Jetzt möchte ich aber die Dateien, welche sich im Bearbeitungsordner befinden mit Hilfe eines Konvertierungsprogammes in einen Ordner Fertig überführen (natürlich konvertiert).

    Ich habe mir das Konvertierungsprogramm mit Hilfe von cmd.exe anzeigen lassen. Mein Problem ist aber jetzt einen entsprechenden Code zu entwickeln für ein InputFile und dann zu sagen wohin es gespeichert werden soll.

    Hat jemand eine Idee was ich dafür nutzen könnte oder wie ich es lösen kann?

    Danke
    Willkommen im Forum. :thumbup:

    Madden22 schrieb:

    oder wie ich es lösen kann?
    Zunächst mal bekommst Du hier keine fertige Lösung für Dein Problem, das musst Du selbst machen.
    Wenn Du aktiv mitarbeitest, werden wir gemeinsam eine gute Lösung für Dein Problem finden.
    Fang zunächst mit einer präzisen Aufgabensgtellung an. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich habe ja auch nicht geschrieben: "Löst es mir mal" ;)

    Wie gesagt ich habe einen Ordner wo meine zu konvertierenden Dateien drin sind und diese möchte ich in ein Programm einbinden.

    Das Programm öffnen sollte mit dem Shell-Befehl funktionieren. Das automatische einlesen in das Programm, wo man ansonsten durch den Tree klicken muss wäre der nächste Schritt. Genau da liegt mein Problem. Wie kann ich dem Konvertierungsprogramm nun mittles <InputFile> sagen das er genau die Dateien aus dem Ordner nutzen soll?
    Nun das hängt von dem Konvertierungsprogramm ab.
    Welche Konsolenbefehle werden den Unterstützt.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Wilkommen im Forum ;)

    Es wäre gut wenn du schreiben würdest, welches Programm du meinst, was convertiert wird, evtl ein Screenshot und natürlich ein wenig code. Ich kann mir leider nicht vorstellen wie du das meinst.

    Grüße Andy
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Aloa,

    ich sehe die Problemstellung zweigeteilt.
    1. Du willst ein anderes Programm mit Parametern starten?! (ich meine hier dein Konvertierungsprogramm). Du redest hier von Shell... Ich würde es über die VB-Funktion Process.Start vorschlagen zu lösen.
    2. Du willst anschließend die Datei bewegen. Hier gibt es mehrere Lösungsansätze... Ich empfehle hier den sauberen Ansatz mittels FileInfo
    Die zwei Dinge kannst du dir ja mal ergooglen und wenn du weitere Fragen hast, diese natürlich auch stellen.
    Wenn ich die Aufgabenstellung nicht verstanden hab, wäre ne genauere Definition sinnvoll ;)
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Also ich gebe zu... Ich kenne mich mit dem Ding so garnicht aus.
    Aber wenn ich das richtig sehe, startest du nur einfach die Exe...
    Aber was tut die Exe denne dann? Du gibst doch nur nen Parameter "-h" mit damit er ne genaue Info schreibt. Oder sehe ich das falsch.

    Du kannst ja via Process in VB so viele Parameter an das zu startende Programm mitgeben wie du möchtest. Das ist ja garkein Problem. Aber was du da mitgeben möchtest kann ich dir nicht sagen.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Ich kenne CatiaV5 is grob gesagt ein Zeichenprogramm.
    genügt es dir wenn du für ein gewähltes File oder einen gewählten Ordner per FolderBrowserDialog
    Commandozeilen Argumente ausführst?

    Also du startest die cmd.exe trotzdem aber so:

    VB.NET-Quellcode

    1. Process.Start("cmd.exe", "arg1 arg2")


    Bei Bedarf stellst du Windowstyle auf hidden.
    Wenn du das mit mehreren Dateien in einem Ordner gleichzeitig machen willst musst du vorher mit einer Schleife alle Dateien durchlaufen und dann die cmd.exe ausführen
    wobei du aber darauf aufpassen müsstest das du nicht 2x die cmd.exe startest sondern gewartet wird bis die 1. fertig ist. Da gäbe es dann ein .WaitForExit
    Weil ich denke die Schleife würde dann laufen und dir X-mal die cmd.exe starten und dir vielleicht den Speicher voll räumen.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Snaptu“ ()

    Ja grob gesagt ist das ein Zeichenprogramm und ich brauche aber diese Dateien für ein anderes Programm gewandelt.

    Also normalerweise müsste ich FolderBrowse machen um in den Ordner zu kommen, wo die zu konvertierenden Dateien liegen. Danach angeben, wo diese abgelegt werden sollen und auf einen "Apply-Button" klicken. Den Rest erledigt der Konverter.

    Wenn ich deine Frage richtig verstehe Snaptu dann ist es genau das was ich gerade benötige.
    Also welche Parameter du an nen externes Programm übergeben musst um dieses zu bedienen hat aber prinzipiell nikkes mit Visual Basic zutun.

    Wichtig ist nur...
    1. Mit "Process" kannst du in VB.NET ein Programm starten und dies auch mit Parametern. Welche das sind musst du der Doku deines zu startenden Programmes entnehmen.
    2. Du kannst dein VB-Programm warten lassen, bis das von dir gestartete Programm beendet wurde. (Lies hierzu bitte einfach die Doku - samt Beispiele - von "Process"). Anschließend kannst du mittels FileInfo (lies auch hierzu die Doku) die Dateien verschieben.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    OK, also....

    Du brauchst mal eine Form mit einer Textbox, FolderBrowserDialog und einem Button. Den Button nehme ich immer nur als "Browse" also um den FolderBrowserDialog zu starten.
    Die Textbox kannst du zur Anzeige des Pfades benutzen. Wenn du nicht willst das der Anwender den Pfad in der Textbox verändern kann stellst du die Eigenschaft der Textbox bei "ReadOnly" auf True.

    Versuch mal soweit zu kommen das du den Ordner auswählen kannst wenn du möchtest beim Programmstart immer ein vorgegebener Pfad drinsteht. (Nur wenn du es brauchst)

    Der Rest sieht dann in etwa so aus:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, _
    2. ByVal e As System.EventArgs) Handles Button1.Click
    3. ' Verzeichnis, dessen Dateien ermittelt werden sollen
    4. Dim sPath As String = '.......hier könnte gleich der FolderBrowserDialog.SelectedPath stehen
    5. ' Directory-Object erstellen
    6. Dim oDir As New System.IO.DirectoryInfo(sPath)
    7. ' alle Dateien des Ordners
    8. Dim oFiles As System.IO.FileInfo() = oDir.GetFiles()
    9. Dim oFile As System.IO.FileInfo
    10. For Each oFile In oFiles
    11. 'Alle Files durchgehen, einzeln deine Konvertierung starten und
    12. 'Jedesmal warten bis die cmd.exe beendet wurde
    13. Next
    14. End Sub


    Das ist nur ein Beispiel du müsstest es am Anfang auf den FolderBrowserDialog umbauen.
    Beachte auch immer zu lernzwecken was wann in einen Variablen steht.
    Haltpunkt setzen und mit F11 duchsteppen wenn du nach einer Variable bist siehst du was drin steht wenn du dich mit der Maus drüberbewegst.
    Siehe Anhang.
    Bilder
    • debug.jpg

      121,47 kB, 1.014×196, 120 mal angesehen
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Snaptu“ ()

    Wer hat das

    Madden22 schrieb:

    Konvertierungsprogramm
    geschrieben?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!