Bildconverter Öffnen-in anderem Format Speichern

  • Hallo,

    Ich soll ein kleines Programm entwickeln das Automatisiert nacheinander alle dateien in einem Verzeihnis öffnet und in einem anderen Dateiformat speichert. Das Programm mit dem diese Dateien geöffnet werden ist zwar VB kompartibel aber in der funktionsvielfalt mehr als nur begrenzt.

    Darum möchte ich ein AutoIT script durchlaufen lassen das auf jedem Rechner der das Programm besitzt manuell gestartet werden kann. Das Script ließt aus einem "eingang" ordner alle daten nacheinander. Öffnet diese und speichert die im Zielformat im ordner "Ausgang". Und löscht die ursprungsdatei. Vorgestellt habe ich mit das so:

    If

    <Datei mit der Endung .cdx ist im Ordner "Eingang">

    then

    <suche dateiname der ersten datei mit endung .cdx und speichere den namen in Variable 1>

    <Öffne datei "Variable1">

    winwaitactive ("Programmname - Variable1")
    send ("^+s")
    winwaitactive ("Save File Variable1")
    Send ("X:\PFAD\ZUM\AUSGANG\{$Variable1}")
    Send ("{DEL 4}")
    Send ("{.}tif")
    Send("{TAB}")
    Send("tiff")
    Send("{TAB 2}")
    Send ("{LEER}")
    Send ("Monchrome")
    Send ("{TAB}")
    Send ("1200")
    Send ("{ENTER 2}")
    send ("!{F4}"}

    <gehe zurück zum Programmstart>

    ELSE

    msgbox (64, "Nichts zu tun", "Keine Daten zum konvertieren vorhanden!")

    <Programmende>

    Nun fehlen mir nur ncoh eiige Programmteile.

    Könntet ihr mit helfen?

    Einmal editiert, zuletzt von Arsimael (23. März 2010 um 13:23)

  • Sowas in der Richtung?

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    $sPfad = "C:\Test"

    [/autoit] [autoit][/autoit] [autoit]

    If StringRight($sPfad, 1) = "\" Then $sPfad = StringTrimRight($sPfad, 1)
    $aFiles = _FileListToArray($sPfad, "*.cdx", 1)

    [/autoit] [autoit][/autoit] [autoit]

    If Not @error Then
    For $i = 1 To UBound($aFiles) - 1
    $sCur = $sPfad & "\" & $aFiles[$i]
    ShellExecute($sCur)
    WinWaitActive("Programmname - " & $aFiles[$i])
    Send("^+s")
    WinWaitActive("Save File " & $aFiles[$i])
    Send("X:\PFAD\ZUM\AUSGANG\" & $aFiles[$i])
    Send("{DEL 4}")
    Send("{.}tif")
    Send("{TAB}")
    Send("tiff")
    Send("{TAB 2}")
    Send("{LEER}")
    Send("Monchrome")
    Send("{TAB}")
    Send("1200")
    Send("{ENTER 2}")
    Send("!{F4}"}
    Next
    Else
    MsgBox(64, "Nichts zu tun", "Keine Daten zum konvertieren vorhanden!")
    EndIf

    [/autoit]
  • HAt bisher einwandfrei geklappt. Habs aber noch ein bisschen abändern müssen.

    Das einzige Problem was ich bisher noch habe ist das er die Dateien am ende nicht, oder nur teilweise löscht.

    Hier das script:

    • Offizieller Beitrag

    Ich kenne dein aufgerufenes Programm nicht. Wird das Programm vor dem löschen des(r) Datei(en) beendet? Wenn nicht sind die Dateien von Programm noch geöffnet und Windows weigert sich die Dateien zu löschen.

  • Habs hinbekommen. Das Programm ist ein Zeichenprogramm für chemische Formeln. Da wir in unserem Workflow keine .cdx dateien verarbeiten könenn müssen diese vorher in das .TIFF Format gewandelt werden. Das Program funktioniert in etwa wie der illustrator von Adobe.

    Spoiler anzeigen


    #include <File.au3>
    $sPfad = "C:\chemdraw\in"

    If StringRight($sPfad, 1) = "\" Then $sPfad = StringTrimRight($sPfad, 1)
    $aFiles = _FileListToArray($sPfad, "*.cdx", 1)

    If Not @error Then
    For $i = 1 To UBound($aFiles) - 1
    $sCur = $sPfad & "\" & $aFiles[$i]
    ShellExecute($sCur)
    WinWaitActive("ChemDraw Std")
    sleep (100)
    Send("^+s")
    WinWaitActive("Speichern unter")
    sleep (150)
    Send("{TAB}")
    Send("t")
    Send("C:\chemdraw\out\" & $aFiles[$i])
    Send ("{BS 4}")
    Send(".tif")
    Send("!s")
    sleep (50)
    Send ("^w")
    sleep (100)
    filedelete ("C:\chemdraw\in\" & $aFiles[$i])
    Next
    Else
    MsgBox(64, "Nichts zu tun", "Keine Daten zum konvertieren vorhanden!")
    EndIf

    Das ist mehr oder weniger das funktionierende Script - falls es jemand für andere Dinge braucht.

    An dieser Stelle möchte ich mich auch ganz herzlich bei denen Bedanken die mir hier geholfen haben.