Dateityp umbennen?

  • Hallo zusammen, ich habe da eine frage ist es möglich mit einer Funktion eine Datei umzubenennen?
    Habe mal so im forum rumgeschaut und nichts genaues gefunden außer das "FileMove", aber das verschiebt ja nur die dateien und tut sie ja nur vom Namen her umbenennen.
    Kann mir da einer helfen, DANKE!

  • Ok danke dann habe ich bloß was flasches geschrieben, weil ich möchte das ich es von FileOpenDialog die ausgewählte datei mit FileMove umbenennen möchte, aber weiß ich nicht genau.
    Ich habe es mal so geschrieben:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    GUICreate("TEST", 500, 400)

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

    $menu = GUICtrlCreateMenu("Datei")
    $item = GUICtrlCreateMenuItem("Datei Öffnen...", $menu)
    $item2 = GUICtrlCreateMenuItem("Beenden", $menu)

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

    GUICtrlCreateGroup("Datei öffnen", 10, 10, 480, 60)
    $button = GUICtrlCreateButton("Durchsuchen...", 370, 30, 100, 25)
    $button2 = GUICtrlCreateButton("Umbenennen", 200, 320, 100, 25)
    $input = GUICtrlCreateInput("", 20, 30, 330, 25)
    $radio = GUICtrlCreateRadio("JPG -> BMP", 20, 100)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()

    Switch $msg

    Case $GUI_EVENT_CLOSE
    Exit
    Case $button
    $open = FileOpenDialog("Datei öffnen...", @DesktopDir, "JPG (*.jpg*)")
    GUICtrlSetData($input, $open)
    Case $item
    $open = FileOpenDialog("Datei öffnen...", @DesktopDir, "JPG (*.jpg*)")
    GUICtrlSetData($input, $open)
    Case $item2
    Exit
    Case $button2
    If GUICtrlRead($radio) = $GUI_CHECKED Then
    FileMove(GUICtrlRead($input), @DesktopDir & ".bmp")
    EndIf
    EndSwitch

    WEnd

    [/autoit]

    Aber so funktioniert es ja nicht, kann es bitte einer korigieren?

    10 Mal editiert, zuletzt von m3hm3t (23. Mai 2008 um 18:16)

  • Das geht doch :) die date heißt dann eben Datei.jpg.bmp
    ABER DABEI WIRD DER DATEITYP NICHT GEÄNDERT.
    (Ja, die Endung schon, aber nicht der inhalt der Datei, und bmp und jpg sind unterschiedlich aufgebaut.)
    Wenn du aus einer .JPG eine echte .BMP machen willst, musst du so was machen:

    Spoiler anzeigen
    [autoit]

    _GDIPlus_Startup()
    $img = _GDIPlus_ImageLoadFromFile($filename)
    _GDIPlus_ImageSaveToFile($img,$filename & ".bmp")
    _GDIPlus_ImageDispose($img)
    _GDIPlus_Shutdown(9

    [/autoit]
  • Danke für deine antwort.

    Hmm... weis nicht genau wie du das meinst, aber es funktioniert nicht mir meiner schreibweise.

    Deine schreibweise verstehe ich leider noch nicht und möcht nicht gleich so weit gehen das ich nicht mal weiß was ich schreibe.

    Kannst du es in meiner schreibweise korigieren, das wäre echt nett.

  • Moin,

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    GUICreate("TEST", 500, 400)

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

    $menu = GUICtrlCreateMenu("Datei")
    $item = GUICtrlCreateMenuItem("Datei Öffnen...", $menu)
    $item2 = GUICtrlCreateMenuItem("Beenden", $menu)

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

    GUICtrlCreateGroup("Datei öffnen", 10, 10, 480, 60)
    $button = GUICtrlCreateButton("Durchsuchen...", 370, 30, 100, 25)
    $button2 = GUICtrlCreateButton("Umbenennen", 200, 320, 100, 25)
    $input = GUICtrlCreateInput("", 20, 30, 330, 25)
    $radio = GUICtrlCreateRadio("JPG -> BMP", 20, 100)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()

    Switch $msg

    Case $GUI_EVENT_CLOSE
    Exit
    Case $button
    $sJpegs = FileOpenDialog("Datei öffnen...", @DesktopDir, "JPG (*.jpg*)", 7)
    GUICtrlSetData($input, $sJpegs)
    Case $item
    $sJpegs = FileOpenDialog("Datei öffnen...", @DesktopDir, "JPG (*.jpg*)", 7)
    GUICtrlSetData($input, $sJpegs)
    Case $item2
    Exit
    Case $button2
    If GUICtrlRead($radio) = $GUI_CHECKED Then
    ;JpgToBmp($sJpegs)
    EndIf
    EndSwitch

    WEnd

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

    Func JpgToBmp($filename)

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

    ; GDI+ initialisieren.
    _GDIPlus_Startup()

    ; falls mehrere Dateien mit FileOpenDialog ausgewählt wurden ...
    If StringInStr($filename, '|') Then
    $aFilenames = StringSplit($filename, '|')

    For $i = 1 To $aFilenames[0]
    ; Handle zu Imageobjekt erhalten.
    $hImg = _GDIPlus_ImageLoadFromFile($filename)
    ; Imageobjekt als Bitmapdatei abspeichern.
    _GDIPlus_ImageSaveToFile($hImg,$filename & ".bmp")
    ; Imageobjekt auflösen.
    _GDIPlus_ImageDispose($hImg)
    Next
    ; ... falls nicht.
    Else
    ; Handle zu Imageobjekt erhalten.
    $hImg = _GDIPlus_ImageLoadFromFile($filename)
    ; Imageobjekt als Bitmapdatei abspeichern.
    _GDIPlus_ImageSaveToFile($hImg,$filename & ".bmp")
    ; Imageobjekt auflösen.
    _GDIPlus_ImageDispose($hImg)
    EndIf
    ; GDI+ beenden.
    _GDIPlus_Shutdown()

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

    EndFunc

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


    Gruß
    Greenhorn


  • Oh man das ist ja echt kompliziert auf einem blick, nur für die datei umbenennung.
    Hey aber DANKE, für deine mühe.

  • wenn Du aus einem VW Benziner einen VW Diesel machen willst hast Du auch 2 Möglichkeiten:

    1. Möglichkeit: Du "klebst" am Heck das Diesel-Logo hin und fährst weiter einen VW Benziner (und tankst auch Benzin...)
    2. Möglichkeit: Du bringst Deinen VW Benziner in die Werkstatt und sagst: Macht mir daraus einen Diesel...

    Da reicht es doch auch nicht am Heck einen anderen Namen "aufzukleben", oder?

    Spaß beiseite.

    Zitat

    ... nur für die datei umbenennung.

    Entweder du willst für einen bestimmten Dateityp nur die Endung ändern,
    dann ist das mit FileMove schon richtig ( Aufkleber am Heck), ( z.B. .txt --> .bat )
    Die dementsprechend registrierten Anwendungen müssen natürlich mit dem Dateiinhalt zurechtkommen,
    ansonsten macht das umbenennen keinen Sinn.

    oder du willst den Inhalt ändern. ( z.B. .bmp --> .jpg)
    .bmp = unkomprimiertes Grafikformat
    .jpg = komprimiertes Grafikformat

    Das ist dann natürlich schon etwas aufwendiger.
    Bei Deinem VW musste ja dann auch einen neuene Motor einbauen lassen. 8)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...