Dateikopieren

  • Guten Tag erstmal,

    euer Forum hat mir jetzt schon ein paar mal geholfen, indem ich einfach mal Quelltexte angeschaut habe, aber ich atm ein Problem.

    Ich möchte modfiles in einen eigenen dafür angelegten Ordner kopieren und die Gamefiles sollen im Ordner bleiben.

    Also ich möchte, dass alle Modfiles (egal welche / egal welcher Name) verschoben werden und die Gamefiles nicht. Also wie kann ich machen, dass man alle files verschiebt bis auf halt so eine Liste: (Dateiendung ist immer .iwd bei den mods)

    Spoiler anzeigen

    llocalized_english_iw00.iwd
    localized_english_iw01.iwd
    localized_english_iw02.iwd
    localized_english_iw03.iwd
    localized_english_iw04.iwd
    localized_english_iw05.iwd
    localized_english_iw06.iwd
    localized_english_iw07.iwd
    localized_english_iw08.iwd
    localized_english_iw09.iwd
    localized_english_iw10.iwd
    localized_english_iw11.iwd
    games_mp.log
    hunkusage.dat
    iw_00.iwd
    iw_01.iwd
    iw_02.iwd
    iw_03.iwd
    iw_04.iwd
    iw_05.iwd
    iw_06.iwd
    iw_07.iwd
    iw_08.iwd
    iw_09.iwd
    iw_10.iwd
    iw_11.iwd
    iw_12.iwd
    iw_13.iwd
    iw_14.iwd
    iw_15.iwd
    minibinds.cfg
    modmovescript.au3
    modmovescript.exe
    modmove.ini

    die Datein sollen nicht verschoben werden auch keine Ordner

    ich hoffe jemand versteht was ich meine und kann mir außerdem noch helfen

  • mh und wie kann ich die datein die oben in spoiler sind ausschließen?
    ich könnte sie natürlich auch wieder zurückkopieren wäre, aber das ist unpraktisch und kann lang dauern

    achja den pfad hat ich auch schon XD

    [autoit]


    $filepath=IniRead(@ScriptDir & "\modmove.ini", "Folder", "filepath", "notset")
    If $filepath="notset" Then MsgBox(4096, "Benutzer-Fehler", "Define filepath in .ini-file and try again")

    [/autoit]

    btw danke

    mh könnte man das mit cases machen also bla bla if case die file dann nicht usw?

    3 Mal editiert, zuletzt von leviathan (5. Januar 2007 um 17:49)

    • Offizieller Beitrag

    ?(
    Was willst du denn nun tun (oder nicht tun)?
    Ich hab dich so verstanden:
    - alle Dateien mit Endung ".iwd" sollen in einen gemeinsamen Ordner verschoben werden
    - alle anderen Dateien verbleiben im Ordner

    Ist das richtig? - Genau das macht der Code.

    Oder willst du einige festgelegte Dateien mit der Endung ".iwd" im Ordner belassen und die anderen gleichen Typs verschieben? Geht auch.

    Also erklär noch mal, was du genau möchtest.

  • ok wahrscheinlich hab ich mich nicht deutlich bzw verständlich ausgedrückt es sind im Cod2 Ordner lauter modfiles mit der Endung .iwd aber die spieldatein die gebraucht werden um überhaupt das spiel zu starten haben auch .iwd
    ich möchte diese aber nicht mitverschieben hier nochmal die liste von den datein, die ich nicht verschieben möchte:

    Spoiler anzeigen


    localized_english_iw00.iwd
    localized_english_iw01.iwd
    localized_english_iw02.iwd
    localized_english_iw03.iwd
    localized_english_iw04.iwd
    localized_english_iw05.iwd
    localized_english_iw06.iwd
    localized_english_iw07.iwd
    localized_english_iw08.iwd
    localized_english_iw09.iwd
    localized_english_iw10.iwd
    localized_english_iw11.iwd
    iw_00.iwd
    iw_00.iwd
    iw_02.iwd
    iw_03.iwd
    iw_04.iwd
    iw_05.iwd
    iw_06.iwd
    iw_07.iwd
    iw_08.iwd
    iw_09.iwd
    iw_10.iwd
    iw_11.iwd
    iw_12.iwd
    iw_13.iwd
    iw_14.iwd
    iw_15.iwd

    hier ein Bild mit Dateien die ich nicht kopiert haben will nur ändern die sich also der filename:

    [Blockierte Grafik: http://leviathan-design.de/Bilder/modemove.JPG]


    also ich hab das nun selber so gemacht, dass er erst all .iwd files verschiebt und die gamefiles zurückverschiebt aber kann man das auch beim ersten Schritt auslassen?

    und ich hätte noch ein Frage wie kann ich bei

    [autoit]


    If $filepath="notset" Then MsgBox(4096, "Benutzer-Fehler", "Define filepath in .ini-file and try again")

    [/autoit]

    nach der MsgBox noch das Skript beenden also ein 2ten statement nach dem Then

    2 Mal editiert, zuletzt von leviathan (5. Januar 2007 um 18:34)

    • Offizieller Beitrag

    Als erstes zu deiner 2.ten Frage. Das geht so:

    [autoit]

    If $filepath="notset" Then
    MsgBox(4096, "Benutzer-Fehler", "Define filepath in .ini-file and try again")
    Exit
    EndIf

    [/autoit]

    Da mein Weib gerade zum Essen ruft, muss der Rest noch etwas warten. ;)
    Also bis gleich.

  • ah danke irgendwie happerst immer an solchen kleinigkeiten
    naja soweit funktioniert es eigentlich
    hab noch 2 counter eingebaut mit einer extrafunktion wenn man 2 bestimme dateien nicht verschoben haben möchte
    danke

    • Offizieller Beitrag

    So, war grad Werbepause im TV. Hab dir mal eine Lösung gebastelt.
    Da du sowieso eine INI-Datei verwendest, fügst du einfach die Sektion "NoMove" ein.

    Code
    [NoMove]
    wert1=localized_english_iw01.iwd
    wert2=localized_english_iw03.iwd
    wert3=localized_english_iw08.iwd
    wert4=localized_english_iw11.iwd
    wert5=games_mp.log
    wert6=hunkusage.dat
    wert7=minibinds.cfg
    [autoit]

    #include <file.au3>
    Dim $INIPfad = @ScriptDir & "\test.ini"
    Dim $QuellPfad = "D:\TEST\"
    Dim $ZielPfad = "D:\TEST\moved\"

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

    ; Array mit allen Files, die nicht verschoben werden sollen
    $arNoMove = IniReadSection($INIPfad, "NoMove")

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

    ; Array mit allen ModFiles im Pfad
    $AllModFiles = _FileListToArray($QuellPfad, "*.iwd")
    For $i = 1 To $AllModFiles[0]
    For $k = 1 To $arNoMove[0][0]
    ; Dateien markieren, die nicht verschoben werden sollen
    If $AllModFiles[$i] = $arNoMove[$k][1] Then $AllModFiles[$i] &= "|"
    Next
    Next
    For $i = 1 To $AllModFiles[0]
    ; nicht markierte Dateien verschieben
    If StringRight($AllModFiles[$i], 1) <> "|" Then FileMove($QuellPfad & $AllModFiles[$i], $ZielPfad)
    Next

    [/autoit]
  • ah dankeschön, habe zwar ein bisschen länger gebraucht das zu verstehen aber nu geht es nur denke ich werde ich es anders realisieren, da ich noch das Programm für andere Leute machen werde und so ein Sprachfunktion einbauen werden --> also ich hab eine englische version und da sind die dateinamen der spieldateien anders

    mh irgendwie funktioniert das nicht 8| ist _FileListToArray eine UDF?

    ok hab die UDF mithilfe der SuFu gefunden aber es funktioniert trotzdem nicht muss ich da noch irgendwelche einstellungen machen

    ok hab noch mehr _FileListToArray funktionen gefunden 8| gibt irgendwie mehr als eine kannst du bitte mir einen link bzw. den Code der schicken die du verwendest hast?

    3 Mal editiert, zuletzt von leviathan (6. Januar 2007 um 16:00)

    • Offizieller Beitrag

    Wenn du noch nicht Version 3.2.2.0 Prod installiert hast, mußt du die Beta verwenden.
    In der <file.au3> der Beta sind mehr Funktionen als in der Prod. Sind diese dann Stable gibt es eine neue Version der Prod, wo diese eingebunden werden.
    Was klappt denn noch nicht? Ich habe mir zum Testen die Dateien erstellt um sicherzugehen, dass auch alles funktioniert. - Und das tut es.
    Du schreibst, du hast auch eine englische Version. Die Dateien liegen dann aber sicher in einem anderen Pfad. Somit kannst du das Skript in Abhängigkeit zur verwendeten Sprache steuern und eine weitere Sektion, z.B. [NoMoveEN] anlegen. Ebenfalls zusätzliche Pfade. Sollte kein Problem sein.
    Wenn du nicht weiterkommst, melde dich einfach wieder.

  • 8| hab mal die neue version installiert --> dachte eigentlich, dass ich die schon habe aber nun funktioniert es einwandfrei thx

  • also meine andere lösung hätte einfach die dateien wieder zurückkopiert aber da könnte man nicht so gut die NoMove-Dateien eintragen

    ach ja hier mal das fertige Tool: Download

    und hier mal der Quelltext(aber bitte nicht einfach editieren ohne meine Erlaubnis):

    Spoiler anzeigen
    [autoit]


    ;=========================================================;
    ;
    ; moDMove 2.0 by Lev for Call of Duty 2 1.3 Eng/Ger
    ;
    ;=========================================================;
    #include <GUIConstants.au3>
    #include <file.au3>
    #NoTrayIcon
    ; Checking Config:
    $firstrun = IniRead(@ScriptDir & "\modmove.ini", "Programminfo", "firstrun", "no")
    $counterback = IniRead(@ScriptDir & "\modmove.ini", "Programminfo", "countermoveback", "0")
    $counter = Iniread(@ScriptDir & "\modmove.ini", "Programminfo", "counter" ,"0")
    $counterextra = Iniread(@ScriptDir & "\modmove.ini", "Programminfo", "counterextra", "0")
    $devmapsaveposmod = IniRead(@ScriptDir & "\modmove.ini", "Extra", "devmapsavemod", "no")
    $filepath=IniRead(@ScriptDir & "\modmove.ini", "Folder", "filepath", "notset")
    If $filepath="notset" Then
    MsgBox(4096, "Benutzer-Fehler", "Define filepath in .ini-file and try again")
    Exit
    EndIf
    $language=IniRead(@ScriptDir & "\modmove.ini", "Programminfo", "language", "eng")
    If $language="eng" Then
    _cod2fileseng()
    Else
    If $language="ger" Then
    _cod2filesger()
    Else
    Exit
    EndIf
    EndIf
    ;script for moDMove to modmove folder starts here
    Dim $INIPfad = @ScriptDir & "\modmove.ini"
    Dim $QuellPfad = $filepath
    Dim $ZielPfad = $filepath & "modmove\"
    ; Array mit allen Files, die nicht verschoben werden sollen
    $arNoMove = IniReadSection($INIPfad, "NoMove")

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

    If $firstrun="no" Then
    SplashTextOn("First Run of moDMove 4s", "Be sure that u have read moDMove.txt and changed all values in the modmove.ini",200,60)
    sleep(4000)
    SplashOff()
    IniWrite(@ScriptDir & "\modmove.ini", "Programminfo", "firstrun", "yes")
    ENDIf
    ; Here starts GUI with Script
    FileInstall("F:\Call of Duty 2\main\modmove.jpg", @TempDir & "\modmove.jpg", 1)
    FileInstall("F:\Call of Duty 2\main\modmove.ico", @TempDir & "\modmove.ico", 1)
    GUICreate("moDMove2.0 by Lev",269,118)
    GUISetState(@sw_show)
    GUISetIcon(@TempDir & "\modmove.ico")
    $countermoveback=IniRead($INIPfad, "Programminfo", "countermoveback", "0")
    $logo=GUICtrlCreatePic(@TempDir & "\modmove.jpg",0,0,269,64,-1,-1)
    $movemodsbutton=GUICtrlCreateButton("Move 'Em",14,90,88,20,-1,-1)
    $movemodsbackbutton=GUICtrlCreateButton("Move 'Em Back",134,90,88,20,-1,-1)
    $aboutbutton=GUICtrlCreateButton("About",232,90,37,20)
    $notice=GUICtrlCreateLabel("Be sure that u made all the confgis in the modmove.ini",5,69,261,13,-1,-1)
    While 1
    $msg=GUIGetMsg()
    If $msg=$movemodsbutton Then
    $AllModFiles = _FileListToArray($QuellPfad, "*.iwd")
    For $i = 1 To $AllModFiles[0]
    For $k = 1 To $arNoMove[0][0]
    ; Dateien markieren, die nicht verschoben werden sollen
    If $AllModFiles[$i] = $arNoMove[$k][1] Then $AllModFiles[$i] &= "|"
    Next
    Next
    For $i = 1 To $AllModFiles[0]
    ; nicht markierte Dateien verschieben
    If StringRight($AllModFiles[$i], 1) <> "|" Then FileMove($QuellPfad & $AllModFiles[$i], $ZielPfad)
    Next
    ;counter
    Select
    case $devmapsaveposmod = "yes"
    FileMove($filepath & "modmove\zzz_Save_position_mod_V1.0.iwd", $filepath)
    FileMove($filepath & "modmove\zzz_999_nades.iwd", $filepath)
    $iextra = $counterextra +1
    IniWrite(@ScriptDir & "\modmove.ini", "Programminfo", "counterextra", $iextra)
    case Else
    ;counting the amount of movements
    $icounter = $counter + 1
    IniWrite(@ScriptDir & "\modmove.ini", "Programminfo", "counter", $icounter)
    EndSelect
    ENDIf
    If $msg=$movemodsbackbutton Then
    FileMove($ZielPfad & "*.iwd", $QuellPfad, 1)
    ;counter
    $icounterback = $counterback +1
    IniWrite(@ScriptDir & "\modmove.ini", "Programminfo", "countermoveback", $icounterback)
    ENDIf
    If $msg=$aboutbutton Then MsgBox(262144+0+64,"About this crappy shit ;) moDMove 2.0", "made by Leviathan; used AutoIt; visit https://autoit.de/www.codjumper.com ->use of your own I'm not responsible for any damage")
    If $msg=$GUI_EVENT_CLOSE Then ExitLoop
    WEnd

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

    ; =======================================================================================================
    ; Functions: ==============================================================================================

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

    Func _movemods()
    $AllModFiles = _FileListToArray($QuellPfad, "*.iwd")
    For $i = 1 To $AllModFiles[0]
    For $k = 1 To $arNoMove[0][0]
    ; Dateien markieren, die nicht verschoben werden sollen
    If $AllModFiles[$i] = $arNoMove[$k][1] Then $AllModFiles[$i] &= "|"
    Next
    Next
    For $i = 1 To $AllModFiles[0]
    ; nicht markierte Dateien verschieben
    If StringRight($AllModFiles[$i], 1) <> "|" Then FileMove($QuellPfad & $AllModFiles[$i], $ZielPfad)
    Next
    ENDFunc
    ; here the script of the backmove of the mods into the mainfolder
    Func _movemodsback()
    FileMove($ZielPfad & "*.iwd", $QuellPfad, 1)
    ENDFunc
    ;language functions:
    Func _cod2fileseng()
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert1", "localized_english_iw00.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert2", "localized_english_iw01.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert3", "localized_english_iw02.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert4", "localized_english_iw03.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert5", "localized_english_iw04.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert6", "localized_english_iw05.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert7", "localized_english_iw06.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert8", "localized_english_iw07.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert9", "localized_english_iw08.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert10", "localized_english_iw09.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert11", "localized_english_iw10.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert12", "localized_english_iw11.iwd")
    ENDFunc
    Func _cod2filesger()
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert1", "localized_german_iw00.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert2", "localized_german_iw01.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert3", "localized_german_iw02.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert4", "localized_german_iw03.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert5", "localized_german_iw04.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert6", "localized_german_iw05.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert7", "localized_german_iw06.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert8", "localized_german_iw07.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert9", "localized_german_iw08.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert10", "localized_german_iw09.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert11", "localized_german_iw10.iwd")
    IniWrite(@ScriptDir &"\modmove.ini", "NoMove", "wert12", "localized_german_iw11.iwd")
    ENDFunc

    [/autoit]

    ach ja ist es möglich einen Hyperlink zu erzeugen also, dass es dann mit dem Standartbrowser geöffnet wird?

    Einmal editiert, zuletzt von leviathan (6. Januar 2007 um 20:53)

  • joa richtig danke werde das nächstemal mich selbst zu bemühen aber war grad am schreiben

  • 8| ok hab eine neues Problem und zwar hab ich das Programm erweitert also ich wollte es erweitern.

    Ich hab eine maingui mit den buttons und einem menü; wenn man dann auf help->stats geht erzeugt er eine neue gui doch jetzt kommt das problem wenn ich jetzt auf close also oben rechts auf schließen drücke schließt er mir auch mein mainguifenster

    wie kann ich machen, dass er immer nur das eine Fenster schließt.

    also bei beiden guis arbeite ich mit getmsg aber hab auch die variable geändert und gehe mit ExitLoop auf der While-Schleife herraus