alpines Mann, bist du schnell!
Dateinamen ab einem bestimmten Zeichen nach rechts entfernen funktioniert nicht immer => Umstieg zu Autoit
-
Masel_tov -
31. Oktober 2020 um 22:18 -
Erledigt
-
-
Hallo,
es gibt zwar keine Fehlermeldung, aber ich sehe weder eine Konsole noch eine Anzeige, wo auch immer.
Was mache ich da falsch?
-
Führst du das Skript denn auch in SciTE aus, oder startest du die Datei direkt mit einem Doppelklick?
Drück mal F5 in SciTE während du das Skript offen hast.
-
Wenn man weiß wie´s geht, ist es natürlich ganz einfach.
Also:
Es funktioniert mittels "F5"
Es gibt keine Probleme mit zuviel abgeschnippelten Textstellen
...
Nun habe ich die letzte Zeile auskommentiert und es hat alle einwandfrei geklappt - ebenfalls OHNE zuviel abzuschnippeln
Vielen Dank an Euch beide !
Ich werde mir das jetzt mal genau anschauen, um es auf andere "Probleme" anwenden zu können, wenn´s soweit ist.
Bleibt gesund !
-
Hier noch eine etwas andere Version für dich...
Wenn du das Script kompilierst und von der Exe eine Verknüpfung auf den Desktop legst, kannst du Verzeichnisse und/oder Dateien aus dem Explorer auf der Verknüpfung ablegen, um die Dateien umzubenennen. Mit Doppelklick auf die Verknüpfung wird nach einem Verzeichnis gefragt, in dem die Dateien umbenannt werden sollen.
- Wird ein Verzeichnis (oder mehrere) auf der Verknüpfung abgelegt, werden die darin befindlichen Dateien umbenannt.
- Wird eine Datei (oder mehrere) auf der Verknüpfung abgelegt, werden diese Dateien umbenannt.
...oder du startest es aus der CMD mit Parametern... wobei du die Namen in "" setzen musst, wenn sie Leerzeichen enthalten.
RenameFiles.exe [Dirname|Filename]
PS: FileMove habe ich auskommentiert...
PUSHD ist ähnlich wie CD... mit dem Unterschied, dass du mit POPD wieder zurück in das vorherige Verzeichnis wechseln kannst, wobei dann auch das Laufwerk gewechselt wird, was bei CD nicht der Fall ist.
goto :eof macht am Ende eines Batches keinen Sinn... denn da bist du dann ja bereits.
AutoIt
Alles anzeigen;-- TIME_STAMP 2020-11-01 02:57:22 v 0.1 #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Change2CUI=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** Opt('MustDeclareVars', 1) #include <File.au3> ; Leere Testdatei erzeugen, da wir ja nur den Namen brauchen. ;~ FileWrite('Film mit Sean Connery (640 x 320 Auflösung irgendwas...usw).mp4', '') _Main() Func _Main() Local $aFiles[0], $sFolder, $sNewName If $CMDLINE[0] Then ;~ _ArrayDisplay($CMDLINE, '$CMDLINE') For $i = 1 To $CMDLINE[0] Step 1 ReDim $aFiles[0] If FileExists($CMDLINE[$i]) Then If StringInStr(FileGetAttrib($CMDLINE[$i]), 'D') Then ; Verzeichnis $aFiles = _FileListToArray($CMDLINE[$i], '*', $FLTA_FILES, True) _RenameFiles($aFiles) Else ; Datei ReDim $aFiles[2] $aFiles[0] = 1 $aFiles[1] = $CMDLINE[$i] _RenameFiles($aFiles) EndIf EndIf Next Else $sFolder = FileSelectFolder('RenameFiles', '') If $sFolder Then $aFiles = _FileListToArray($sFolder) _RenameFiles($aFiles) EndIf EndIf EndFunc ;==>_Main Func _RenameFiles($aFiles) Local $sNewName ;~ _ArrayDisplay($aFiles, '$aFiles') If UBound($aFiles) > 1 Then For $i = 1 To $aFiles[0] Step 1 $sNewName = _GetNewName($aFiles[$i]) ;~ FileMove($aFiles[$i], $sNewName) ; Datei umbenennen Next EndIf EndFunc ;==>_RenameFiles Func _GetNewName($sOldName) Local $sNewName = StringRegExpReplace($sOldName, '(.+) \(.*\)(.+)', '\1\2') ConsoleWrite('> $sOldName = ' & $sOldName & @CRLF) ConsoleWrite('- $sNewName = ' & $sNewName & @CRLF) Return $sNewName EndFunc ;==>_GetNewName
-
- Offizieller Beitrag
Für normale Sachen nehme ich üblicherweise Sublime.
Wenn du damit vertraut bist kannst du es auch für AutoIt anwenden: AutoIt mit Sublime Text 2/3 -- Sprachdef. f. Stable v3.3.12.0, Wrapper, Au3Check, Run m. Parameter
.. und im englischen Forum: https://www.autoitscript.com/forum/topic/148016-sublimetext/
-
Hallo,
vielen Dank für den Hinweis mit Sublime und den neuen Ansatz.
Jetzt hab´ ich erst einmal damit zu tun, das Script zu verstehen. Aber der Tag ist ja noch laaang.
-
Eventuell wäre ein Ordnerauswahldialog auch eine komfortable Lösung?:
AutoIt
Alles anzeigen; Ordnerpfad über Dialog bestimmen: Global $sPath = FileSelectFolder("Pfad wählen", @ScriptDir, 2) ; Dateiauflistung initialisieren: $hSearchHandle = FileFindFirstFile($sPath & "\*(*)*") ; findet nur Dateien die mind. eine öffnende und schließende Klammer im Namen haben ; Dateien abarbeiten: Do $sFileName = FileFindNextFile($hSearchHandle) If @error Then ExitLoop ; Schleife beenden falls keine weiteren Dateien mehr existieren If @extended Then ContinueLoop ; Ordner sollen ignoriert werden ; Klammerausdrücke aus Dateinamen entfernen: $sNewName = StringRegExpReplace($sFileName, '\h*\(.+\)\h*', "") ; umbenennen falls es was zum umbenennen gibt: If $sNewName <> $sFileName Then FileMove($sPath & "\" & $sFileName, $sPath & "\" & $sNewName) Until 0 ; Handle schließen (hier fast egal - aber gehört sich so): FileClose($hSearchHandle)
-
Hallo "Gürteltier",
erst einmal vielen Dank für diese Lösung !
DAS ist nicht nur komfortable, ich werde auch vermutlich in Bälde den Code kapieren.
Die anderen Lösungen haben bisweilen den Vorteil, daß ich nur eine Klammer entfernen kann, da es doch evtl. vorkommt, daß noch eine weitere Klammer im String steht.
Ich lasse derzeit einfach mal zuerst die anderen Scripts OHNE direkte Umbenennung mittels Konsole laufen und entscheide dann, ob und was ich umbenenne.
Deine Lösung werde ich mir jetzt mal genau anschauen, damit ich in die AutoIt-Materie reinkomme.
Bei der vorherigen Lösung versuche ich, eine Messagebox zu integrieren, um entweder "weiter und umbenennen" oder "abbrechen" in´s Repertoire aufzunehmen.
Nebenbei...
Ich hoffe mal, daß Du nicht wie ich auf Aspirin angewiesen bist. Das wird zwar mittlerweile magenschonend feilgeboten, aber die ständige Einnahme wird dennoch nicht empfohlen.
Naja, immerhinque kann ich´s mir aussuche: Entweder Aspirin oder zeitweise blind...
Gruß und bleib gesund
-
Die anderen Lösungen haben bisweilen den Vorteil, daß ich nur eine Klammer entfernen kann, da es doch evtl. vorkommt, daß noch eine weitere Klammer im String steht.
Was wie in welcher Form alles auftauchen kann, lässt sich am besten anhand von ein paar Beispielen beschreiben.
Dann kann man entsprechende Regeln in Form von regulären Ausdrücken daraufhin definieren (die StringRegEx-Funktionen).
Das Problem hieran ist, dass man sich erstmal in diese einarbeiten muss, da deren Syntax alles andere als autoplausibel ist.
Es lohnt sich aber definitiv - eben weil es nicht AutoIt-spezifisch ist sondern überall auftaucht.
Auch hier bei uns gibt es ein >>entsprechendes Tutorial<<.
Zum Nachvollziehen ist daher alpines Variante erst einmal die bessere Variante, da man sich diese ohne groß einlesen selbst erschließen kann.
Gib also mal ein paar Beispiele was wie auftauchen kann und entfernt werden soll.
Hallo "Gürteltier",
Nene - das ist ein Erdferkel...
Ich hoffe mal, daß Du nicht wie ich auf Aspirin angewiesen bist.
Meine letzte Aspirin habe ich wohl vor ca. 2 Jahren mal genommen.
Der Name kommt aus meiner präpubertären Phase (war ca. 12 Jahre) im Jahre 1999 - der Hochzeit von AOL - als auch Normalsterbliche das Internet für sich entdeckten und es unglaublich witzig fanden ganz "verrückte" Nicknames in diesem neuen Ding namens "Chat" zu verwenden.
Über die Zeit kam dann immer mehr Bartwuchs dazu - der Nick blieb jedoch.
Im Grunde mag ich ihn also selbst nicht - kann und will ihn jedoch nicht mehr ändern, da eine gewisse Identität hieran geknüpft ist.
-
Hallo Aspirinjunkie,
na, dann werd´ ich mal schau´n, wie ich klar komme.
Ein konkretes Beispiel gibt´s derzeit nicht. Allerdingens bin ich ja hier gelandet, weil die Batch-Lösung seinerzeit manchmal alles bis auf die Knochen abgenagt hatte.
Übrigens:
Migräne + Aura => In der Tat Durchblutungsstörungen. Ich kenne indes keinen einzigen Arzt oder irgendwen im Netz, der das mittels ASS100 bekämpft.
Mein Augenarzt hatte mir ASS100 mal verschrieben und ich hatte plötzlich keine Seeprobleme mehr.
Aber außer meinem Augenarzt hatte das auch wiederum niemanden interessiert. Irgendwie scheint die Einnahme von "3 Liter Meduzin" doch die einfachste Lösung zu sein...
-