FileRename Problem mit File aus FileOpenDialog

  • Moin.

    Ich wähle mit den folgenden Zeilen eine Datei aus. Nehmen wir mal die vorher.abc als Beispiel

    Spoiler anzeigen
    Code
    $File = FileOpenDialog("Wähle eine Datei zum einlesen ...", @ScriptDir, "Textdatei (*.txt)|alle Dateien(*.*)", BitOR($FD_FILEMUSTEXIST, $FD_MULTISELECT))
    $sFileRead = FileRead($File)

    Jetzt möchte ich die ausgewählte Datei vorher.abc in nachher.123 (Beispielname) umbenennen und mit diesem Dateinamen dann bei $sFileRead weiter arbeiten.

    FileRename hat autoit ja nicht und mit FileMove bekomme ich es so nicht hin.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • FileMove

    Nimm lieber

    1. FileCopy

    2. (wenn die Quelle nicht mehr gebraucht wird) FileDelete

    die ausgewählte Datei vorher.abc in nachher.123 (Beispielname) umbenennen und mit diesem Dateinamen dann bei $sFileRead weiter arbeiten

    Was ist der Sinn? Wenn du eine andere Datei, als die ausgewählte verarbeiten willst (diese muss demzufolge bereits existieren!), dann lass doch diese Datei auswählen.

    Oder ist die ausgewählte ein Template und soll als Arbeitsdokument demzufolge einen anderen Namen erhalten? In diesem Fall:

    AutoIt
    $selectedTemplate = FileOpenDialog(....)
    $workingFile = "Working\Document\Path"
    FileCopy($selectedTemplate, $workingFile, $FC_CREATEPATH)

    FileRename hat autoit ja nicht

    Kannst du dir schnell erstellen

    AutoIt
    Func _FileRename($_sSource, $_sDestination, $_bSourceDelete=True)
        If Not FileExists($_sSource) Then Return SetError(1,0,0) ; $_sSource not exists
        If Not FileCopy($_sSource, $_sDestination, $FC_CREATEPATH) Then
            Return SetError(2,0,0) ; $_sDestination exists
        Else
            If $_bSourceDelete Then FileDelete($_sSource)
        EndIf
        Return 1
    EndFunc
  • mit FileMove bekomme ich es so nicht hin.

    Musst halt den Pfad vorher splitten - dann bist du entsprechend flexibel:

    AutoIt
    #include <FileConstants.au3>
    #include <File.au3>
    
    $File = FileOpenDialog("Wähle eine Datei zum einlesen ...", @ScriptDir, "Textdatei (*.txt)|alle Dateien(*.*)", BitOR($FD_FILEMUSTEXIST, $FD_MULTISELECT))
    
    Local $sDrive, $sDir, $sFileName, $sExt
    _PathSplit($File, $sDrive, $sDir, $sFileName, $sExt)
    
    Filemove($File, $sDrive & $sDir & "nachher.123")

    Edit:

    Nimm lieber

    1. FileCopy

    2. (wenn die Quelle nicht mehr gebraucht wird) FileDelete

    Was ist für dich der Grund es so zu machen und nicht einfach mit FileMove()?
    Auf den ersten Blick sehe ich da nur Nachteile und keinen Vorteil - irgendwas übersehe ich vielleicht?

    Einmal editiert, zuletzt von AspirinJunkie (21. November 2022 um 11:17)

  • Danke allen.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl