Schalter-Sammlung: (mehrfaches) Umbenennen

Forum zur Erstellung von Schaltern über den Befehlseditor
Joerg765
Beiträge: 98
Registriert: 12. Apr 2010 07:23
Betriebssystem: Windows 7 Home 64bit
Produkt: DOpus 11.3
Version DOpus: Pro

Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Joerg765 » 17. Apr 2010 23:08

Dieser Menü-Schalter wirkt auf ALLE ausgewählten (selektierten) Ordner UND Dateien gleichzeitig.

Die Icons müssen nach C:\ kopiert, oder der CODE dementsprechend angepasst werden.

Es sind fast alle CODEs aus dem folgenden zweiten Beitrag enthalten.
SM.jpg
SM.jpg (61.51 KiB) 6726 mal betrachtet
JÖRG (Windows7 und DOpus 9.53)
Dateianhänge
Menü-Schalter (Umbennenen) NEU.zip
(45.93 KiB) 348-mal heruntergeladen
Zuletzt geändert von Joerg765 am 2. Sep 2010 20:37, insgesamt 30-mal geändert.

Joerg765
Beiträge: 98
Registriert: 12. Apr 2010 07:23
Betriebssystem: Windows 7 Home 64bit
Produkt: DOpus 11.3
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Joerg765 » 20. Apr 2010 07:57

Diese CODEs wirken auf ALLE ausgewählten (selektierten) Ordner UND Dateien gleichzeitig.

Wie bekomme ich diese CODEs in einen neuen Schalter ?


- Einstellungen - Anpassen...
- rechte Maustaste auf Symbolleiste
- Neu - Neuer Schalter
- rechte Maustaste auf Neuer Schalter
- Bearbeiten...
- Erweitert...
- CODE hineinkopieren
- OK

Die Datei-Attribute "Erstellt am" und "Geändert am" in das aktuelle Datum ändern
HINWEIS: Für die internationale Schreibweise (2010-05-14) muß man das (dd. MMM yyyy) durch (yyyy-MM-dd) ersetzen

Code: Alles auswählen

SetAttr CREATED=now
SetAttr MODIFIED=now
@NODESELECT
Die Datei-Attribute "Erstellt am" und "Geändert am" in ein bestimmtes Datum ändern
HINWEIS: Für die internationale Schreibweise (2010-05-14) muß man das (dd. MMM yyyy) durch (yyyy-MM-dd) ersetzen

Code: Alles auswählen

SetAttr CREATED="2008-04-04 18:05:56"
SetAttr MODIFIED="2008-04-04 18:05:56"
@NODESELECT
Das Datum (Aktuell) HINTER dem Namen einfügen = Name (14. Mai 2010)
HINWEIS: Für die internationale Schreibweise (2010-05-14) muß man das (dd. MMM yyyy) durch (yyyy-MM-dd) ersetzen

Code: Alles auswählen

Rename TYPE=files PATTERN "*.*" TO "* {date|(dd. MMM yyyy)}.*" AUTORENAME
Rename TYPE=dirs PATTERN "*" TO "* {date|(dd. MMM yyyy)}" AUTORENAME
@NODESELECT
Das Datum (Aktuell) mit Uhrzeit HINTER dem Namen einfügen = Name (14. Mai 2010 14.28)
HINWEIS: Für die internationale Schreibweise (2010-05-14) muß man das (dd. MMM yyyy) durch (yyyy-MM-dd) ersetzen

Code: Alles auswählen

Rename TYPE=files PATTERN "*.*" TO "* {date|(dd. MMM yyyy} {time|HH.mm)}.*" AUTORENAME
Rename TYPE=dirs PATTERN "*" TO "* {date|(dd. MMM yyyy} {time|HH.mm)}" AUTORENAME
@NODESELECT
Das Datum (Erstellt am) HINTER dem Namen einfügen = Name (10. Apr 2010)
HINWEIS: Für das Datum (Geändert am) muß man das created durch modified ersetzen

Code: Alles auswählen

Rename TYPE=files PATTERN "*.*" TO "* {created|D#(dd. MMM yyyy)}.*" FILEINFO AUTORENAME
Rename TYPE=dirs PATTERN "*" TO "* {created|D#(dd. MMM yyyy)}" FILEINFO AUTORENAME
@NODESELECT
Das Datum (Erstellt am) mit Uhrzeit HINTER dem Namen einfügen = Name (10. Apr 2010 13.44)
HINWEIS: Für das Datum (Geändert am) muß man das created durch modified ersetzen

Code: Alles auswählen

Rename TYPE=files PATTERN "*.*" TO "* {created|D#(dd. MMM yyyy T#HH.mm)}.*" FILEINFO AUTORENAME
Rename TYPE=dirs PATTERN "*" TO "* {created|D#(dd. MMM yyyy T#HH.mm)}" FILEINFO AUTORENAME
@NODESELECT
Alle ausgewählten (selektierten) Ordner ODER Dateien durchnummerieren = z. B. 01, 02, 03, ...
Erklärung: BY=1 erhöht die Nummerierung immer um eine Stelle

Code: Alles auswählen

@set X={dlgstring|Nummerierung beginnen mit|01}
Rename TYPE=files NUMBER={$X} BY=1 REGEXP PATTERN="(.*)(\..*)" TO="[#]\2"
Rename TYPE=dirs NUMBER={$X} BY=1 PATTERN="*" TO="[#]"
@NODESELECT
Alle ausgewählten (selektierten) Ordner ODER Dateien mit Namen durchnummerieren = z. B. 01 Name1, 02 Name2, 03 Name3, ...
Erklärung: BY=1 erhöht die Nummerierung immer um eine Stelle

Code: Alles auswählen

@set X={dlgstring|Nummerierung beginnen mit|01}
Rename TYPE=files NUMBER={$X} BY=1 REGEXP PATTERN="(.*)(\..*)" TO="[#] \1\2"
Rename TYPE=dirs NUMBER={$X} BY=1 PATTERN="*" TO="[#] *"
@NODESELECT
Einen neuen Text AN einer beliebigen Stelle (von VORNE) einfügen (by JohnZeman)
HINWEIS: Hier kann man die Stelle und den neuen Text direkt in EINEM Eingabefenster eingeben

Code: Alles auswählen

<?xml version="1.0"?>
<button backcol="none" display="icon" textcol="none" type="menu">
	<label>Zeichen Einfügen/Entfernen</label>
	<tip>Zeichen Einfügen/Entfernen</tip>
	<icon1>#script</icon1>
	<button backcol="none" display="both" textcol="none">
		<label>Zeichen an Position von Vorne</label>
		<tip>Zeichen an gewählter Position von Vorne einfügen</tip>
		<icon1>#default:script</icon1>
		<function type="normal">
			<instruction>Rename TO="{DlgStringS|AN welcher Stelle soll eingefügt werden ?\n\ndurch ein Komma getrennt\n\nWAS soll eingefügt werden ?|2,Neuer Text}" AUTORENAME</instruction>
			<instruction>@nodeselect </instruction>
			<instruction />
			<instruction>@script vbscript</instruction>
			<instruction>option explicit</instruction>
			<instruction />
			<instruction>Function Rename_GetNewName ( strFileName, strFullPath, fIsFolder, strOldName, ByRef strNewName )</instruction>
			<instruction />
			<instruction>   Dim strNameOnly</instruction>
			<instruction>   Dim strExtension</instruction>
			<instruction>   Dim intComPos   &apos; Location of the leftmost comma in dialog box entry</instruction>
			<instruction>   Dim strText   &apos; Extracted Text from dialog box entry</instruction>
			<instruction>   Dim strCount   &apos; Extracted number (of places from left) from dialog box entry</instruction>
			<instruction />
			<instruction>   &apos; If we&apos;re renaming a file then remove the extension from the end and save it for later.</instruction>
			<instruction>   if fIsFolder or 0 = InStr(strFileName,".") then</instruction>
			<instruction>      strExtension = ""</instruction>
			<instruction>      strNameOnly = strFileName</instruction>
			<instruction>   else</instruction>
			<instruction>      strExtension = Right(strFileName, Len(strFileName)-(InStrRev(strFileName,".")-1))</instruction>
			<instruction>      strNameOnly = Left(strFileName, InStrRev(strFileName,".")-1)</instruction>
			<instruction>   end if</instruction>
			<instruction />
			<instruction>   &apos; Find the leftmost comma</instruction>
			<instruction>   intComPos = InStr(strNewName,",")</instruction>
			<instruction>   if intComPos > 0 then</instruction>
			<instruction>      strCount = Trim(Left(strNewName, intComPos-1))</instruction>
			<instruction>      strText = Right(strNewName,Len(strNewName)-intComPos)</instruction>
			<instruction>   end if</instruction>
			<instruction />
			<instruction>     Dim I</instruction>
			<instruction>   Dim Dots</instruction>
			<instruction>   Dots = ""   </instruction>
			<instruction />
			<instruction>   if CInt(strCount) > 0 then</instruction>
			<instruction>       I = 1</instruction>
			<instruction>       While I < CInt(strCount)</instruction>
			<instruction>      Dots = Dots & "."</instruction>
			<instruction>      I = I+1</instruction>
			<instruction>       Wend</instruction>
			<instruction>      Dots = "(^" & Dots & ")"</instruction>
			<instruction>   else</instruction>
			<instruction>      &apos; Character position was not more than 0 - set LeftDots to an invalid value so rename fails</instruction>
			<instruction>      Dots = "(8SCaO4fOzy5hy4Fs2CxBGCPy6oAl2Hp988ZH9C3toox0HWlmOA)"</instruction>
			<instruction>   end if</instruction>
			<instruction>      </instruction>
			<instruction>   Dim regex</instruction>
			<instruction>   &apos; Create a RegExp object</instruction>
			<instruction>   Set regex = new RegExp</instruction>
			<instruction>   regex.Pattern = Dots & "(.*)"</instruction>
			<instruction>   </instruction>
			<instruction>   strNameOnly = regex.Replace(strNameOnly, "$1" & strText & "$2")</instruction>
			<instruction>   strNewName = strNameOnly & strExtension</instruction>
			<instruction />
			<instruction>   End Function </instruction>
		</function>
	</button>
</button>
Einen neuen Text AN einer beliebigen Stelle (von HINTEN) einfügen (by JohnZeman)
HINWEIS: Hier kann man die Stelle und den neuen Text direkt in EINEM Eingabefenster eingeben

Code: Alles auswählen

<?xml version="1.0"?>
<button backcol="none" display="both" separate="yes" textcol="none">
		<label>Zeichen an Position von Hinten</label>
		<tip>Zeichen an gewählter Position von Hinten einfügen</tip>
		<icon1>#default:script</icon1>
		<function type="normal">
			<instruction>Rename TO="{DlgStringS|AN welcher Stelle soll eingefügt werden ?\n\ndurch ein Komma getrennt\n\nWAS soll eingefügt werden ?|2,Neuer Text}" AUTORENAME</instruction>
			<instruction>@nodeselect </instruction>
			<instruction />
			<instruction>@script vbscript</instruction>
			<instruction>option explicit</instruction>
			<instruction />
			<instruction>Function Rename_GetNewName ( strFileName, strFullPath, fIsFolder, strOldName, ByRef strNewName )</instruction>
			<instruction />
			<instruction>   Dim strNameOnly</instruction>
			<instruction>   Dim strExtension</instruction>
			<instruction>   Dim intComPos   &apos; Location of the leftmost comma in dialog box entry</instruction>
			<instruction>   Dim strText   &apos; Extracted Text from dialog box entry</instruction>
			<instruction>   Dim strCount   &apos; Extracted number (of places from left) from dialog box entry</instruction>
			<instruction />
			<instruction>   &apos; If we&apos;re renaming a file then remove the extension from the end and save it for later.</instruction>
			<instruction>   if fIsFolder or 0 = InStr(strFileName,".") then</instruction>
			<instruction>      strExtension = ""</instruction>
			<instruction>      strNameOnly = strFileName</instruction>
			<instruction>   else</instruction>
			<instruction>      strExtension = Right(strFileName, Len(strFileName)-(InStrRev(strFileName,".")-1))</instruction>
			<instruction>      strNameOnly = Left(strFileName, InStrRev(strFileName,".")-1)</instruction>
			<instruction>   end if</instruction>
			<instruction />
			<instruction />
			<instruction>   &apos; Find the leftmost comma</instruction>
			<instruction>   intComPos = InStr(strNewName,",")</instruction>
			<instruction>   if intComPos > 0 then</instruction>
			<instruction>      strCount = Trim(Left(strNewName, intComPos-1))</instruction>
			<instruction>      strText = Right(strNewName,Len(strNewName)-intComPos)</instruction>
			<instruction>   end if</instruction>
			<instruction />
			<instruction>   Dim I</instruction>
			<instruction>   Dim Dots</instruction>
			<instruction>   Dots = ""   </instruction>
			<instruction>   </instruction>
			<instruction>   if CInt(strCount) > 0 then</instruction>
			<instruction>       I = 1</instruction>
			<instruction>       While I < CInt(strCount)</instruction>
			<instruction>      Dots = "." & Dots</instruction>
			<instruction>      I = I+1</instruction>
			<instruction>       Wend</instruction>
			<instruction>      Dots = "(" & Dots & ")"</instruction>
			<instruction>   else</instruction>
			<instruction>      &apos; Character position was not more than 0 - set LeftDots to an invalid value so rename fails</instruction>
			<instruction>      Dots = "(8SCaO4fOzy5hy4Fs2CxBGCPy6oAl2Hp988ZH9C3toox0HWlmOA)"</instruction>
			<instruction>   end if</instruction>
			<instruction>      </instruction>
			<instruction>   Dim regex</instruction>
			<instruction>     &apos; Create a RegExp object</instruction>
			<instruction>     Set regex = new RegExp</instruction>
			<instruction>   regex.Pattern = "(.*)" & Dots </instruction>
			<instruction>   strNameOnly = regex.Replace(strNameOnly, "$1" & strText & "$2") &apos;</instruction>
			<instruction>   strNewName = strNameOnly & strExtension</instruction>
			<instruction>   </instruction>
			<instruction>End Function </instruction>
		</function>
	</button>
</button>
Eine gewünschte Anzahl von Zeichen AN einer beliebigen Stelle (von VORNE) entfernen (by JohnZeman)
HINWEIS: Hier kann man die Stelle und die Anzahl direkt in EINEM Eingabefenster eingeben

Code: Alles auswählen

<?xml version="1.0"?>
<button backcol="none" display="both" textcol="none">
		<label>Anzahl Zeichen an Position von Vorne</label>
		<tip>Anzahl Zeichen an gewählter Position von Vorne entfernen</tip>
		<icon1>#default:script</icon1>
		<function type="normal">
			<instruction>Rename TO="{DlgStringS|AN welcher Stelle soll entfernt werden ?\n\ndurch ein Komma getrennt\n\nWIEVIELE Stellen sollen entfernt werden ?|2,5}" AUTORENAME</instruction>
			<instruction>@nodeselect</instruction>
			<instruction>@script vbscript</instruction>
			<instruction>option explicit</instruction>
			<instruction />
			<instruction>Function Rename_GetNewName ( strFileName, strFullPath, fIsFolder, strOldName, ByRef strNewName )</instruction>
			<instruction />
			<instruction>   Dim strNameOnly</instruction>
			<instruction>   Dim strExtension</instruction>
			<instruction>   Dim intComPos      &apos; Location of the leftmost comma in dialog box entry</instruction>
			<instruction>   Dim strLeftNum         &apos; Extracted left number from dialog box entry</instruction>
			<instruction>   Dim strRightNum      &apos; Extracted right number from dialog box entry</instruction>
			<instruction />
			<instruction>   &apos; If we&apos;re renaming a file then remove the extension from the end and save it for later.</instruction>
			<instruction>   if fIsFolder or 0 = InStr(strFileName,".") then</instruction>
			<instruction>      strExtension = ""</instruction>
			<instruction>      strNameOnly = strFileName</instruction>
			<instruction>   else</instruction>
			<instruction>      strExtension = Right(strFileName, Len(strFileName)-(InStrRev(strFileName,".")-1))</instruction>
			<instruction>      strNameOnly = Left(strFileName, InStrRev(strFileName,".")-1)</instruction>
			<instruction>   end if</instruction>
			<instruction />
			<instruction>      &apos; Find the leftmost comma in dialog box entry</instruction>
			<instruction>   intComPos = InStr(strNewName,",")</instruction>
			<instruction />
			<instruction>   &apos; Extract the 2 numbers from dialog box entry</instruction>
			<instruction>   if intComPos > 0 then</instruction>
			<instruction>      strLeftNum = CInt(Trim(Left(strNewName, intComPos-1)))</instruction>
			<instruction>      strRightNum = CInt(Trim(Right(strNewName,Len(strNewName)-intComPos)))</instruction>
			<instruction>   end if</instruction>
			<instruction />
			<instruction>   Dim I         &apos; General counter variable</instruction>
			<instruction>   Dim LeftDots      &apos; LeftDots will become the first RegEx tagged match</instruction>
			<instruction>   LeftDots = ""      &apos; Set LeftDots to a null value to start</instruction>
			<instruction />
			<instruction>   &apos; Assemble LEFT regEx dots ----------------------------------------</instruction>
			<instruction>   if strLeftNum > 0 then</instruction>
			<instruction>      I = 1</instruction>
			<instruction>      While I < strLeftNum</instruction>
			<instruction>         LeftDots = LeftDots & "."</instruction>
			<instruction>         I = I+1</instruction>
			<instruction>      Wend</instruction>
			<instruction>      LeftDots = "(^" & LeftDots & ")"</instruction>
			<instruction>   else</instruction>
			<instruction>      &apos; Character position was not more than 0 - set LeftDots to an invalid value so rename fails</instruction>
			<instruction>      LeftDots = "(8SCaO4fOzy5hy4Fs2CxBGCPy6oAl2Hp988ZH9C3toox0HWlmOA)"</instruction>
			<instruction>   end if</instruction>
			<instruction>   &apos; ----------------------------------------------------------------------------------------</instruction>
			<instruction />
			<instruction>   Dim ExtractAmt         &apos; ExtractAmt will be the number of characters to remove from the file name</instruction>
			<instruction>   ExtractAmt = strRightNum</instruction>
			<instruction />
			<instruction>   &apos; Assemble EXTRACTION dots ----------------------------------------</instruction>
			<instruction>   Dim ExtractDots      &apos; ExtractDots will become the second RegEx tagged match</instruction>
			<instruction>   ExtractDots = ""   &apos; Set ExtractDots to a null value to start</instruction>
			<instruction>   I = 0</instruction>
			<instruction>   if ExtractAmt > 0 then</instruction>
			<instruction>      While I < ExtractAmt</instruction>
			<instruction>         ExtractDots = ExtractDots & "."</instruction>
			<instruction>         I = I+1</instruction>
			<instruction>      Wend</instruction>
			<instruction>            ExtractDots = "(" & ExtractDots & ")"</instruction>
			<instruction>      else</instruction>
			<instruction>      &apos; Amount to extract was not more than 0 - set ExtractDots to an invalid value so rename fails</instruction>
			<instruction>      ExtractDots = "(loY8TbEarTKFM5jKdd6pOoqAtm8ptx1zN2lx0ooB)"</instruction>
			<instruction>   end if</instruction>
			<instruction>   &apos; ----------------------------------------------------------------------------------------</instruction>
			<instruction />
			<instruction>   Dim regex</instruction>
			<instruction>   &apos; Create a RegExp object</instruction>
			<instruction>   Set regex = new RegExp</instruction>
			<instruction>   regex.Pattern = LeftDots & ExtractDots & "(.*)"</instruction>
			<instruction>   </instruction>
			<instruction>   strNameOnly = regex.Replace(strNameOnly, "$1$3")</instruction>
			<instruction>   strNewName = strNameOnly & strExtension</instruction>
			<instruction>   </instruction>
			<instruction>   End Function</instruction>
		</function>
	</button>
</button>
Eine gewünschte Anzahl von Zeichen AN einer beliebigen Stelle (von HINTEN) entfernen (by JohnZeman)
HINWEIS: Hier kann man die Stelle und die Anzahl direkt in EINEM Eingabefenster eingeben

Code: Alles auswählen

<?xml version="1.0"?>
<button backcol="none" display="both" textcol="none">
		<label>Anzahl Zeichen an Position von Hinten</label>
		<tip>Anzahl Zeichen an gewählter Position von Hinten entfernen</tip>
		<icon1>#default:script</icon1>
		<function type="normal">
			<instruction>Rename TO="{DlgStringS|AN welcher Stelle soll entfernt werden ?\n\ndurch ein Komma getrennt\n\nWIEVIELE Stellen sollen entfernt werden ?|2,5}" AUTORENAME</instruction>
			<instruction>@nodeselect</instruction>
			<instruction>@script vbscript</instruction>
			<instruction>option explicit</instruction>
			<instruction />
			<instruction>Function Rename_GetNewName ( strFileName, strFullPath, fIsFolder, strOldName, ByRef strNewName )</instruction>
			<instruction />
			<instruction>   Dim strNameOnly</instruction>
			<instruction>   Dim strExtension</instruction>
			<instruction>   Dim intComPos      &apos; Location of the leftmost comma in dialog box entry</instruction>
			<instruction>   Dim strLeftNum         &apos; Extracted left number from dialog box entry</instruction>
			<instruction>   Dim strRightNum      &apos; Extracted right number from dialog box entry</instruction>
			<instruction />
			<instruction>   &apos; If we&apos;re renaming a file then remove the extension from the end and save it for later.</instruction>
			<instruction>   if fIsFolder or 0 = InStr(strFileName,".") then</instruction>
			<instruction>      strExtension = ""</instruction>
			<instruction>      strNameOnly = strFileName</instruction>
			<instruction>   else</instruction>
			<instruction>      strExtension = Right(strFileName, Len(strFileName)-(InStrRev(strFileName,".")-1))</instruction>
			<instruction>      strNameOnly = Left(strFileName, InStrRev(strFileName,".")-1)</instruction>
			<instruction>   end if</instruction>
			<instruction />
			<instruction>      &apos; Find the leftmost comma in dialog box entry</instruction>
			<instruction>   intComPos = InStr(strNewName,",")</instruction>
			<instruction />
			<instruction>   &apos; Extract the 2 numbers from dialog box entry</instruction>
			<instruction>   if intComPos > 0 then</instruction>
			<instruction>      strLeftNum = CInt(Trim(Left(strNewName, intComPos-1)))</instruction>
			<instruction>      strRightNum = CInt(Trim(Right(strNewName,Len(strNewName)-intComPos)))</instruction>
			<instruction>   end if</instruction>
			<instruction />
			<instruction>   Dim I         &apos; General counter variable</instruction>
			<instruction>   Dim LeftDots      &apos; LeftDots will become the first RegEx tagged match</instruction>
			<instruction>   LeftDots = ""      &apos; Set LeftDots to a null value to start</instruction>
			<instruction />
			<instruction>   &apos; Assemble LEFT regEx dots ----------------------------------------</instruction>
			<instruction>   if strLeftNum > 0 then</instruction>
			<instruction>      I = 1</instruction>
			<instruction>      While I < strLeftNum</instruction>
			<instruction>         LeftDots = "." & LeftDots</instruction>
			<instruction>         I = I+1</instruction>
			<instruction>      Wend</instruction>
			<instruction>      LeftDots = "(" & LeftDots & ")"</instruction>
			<instruction>   else</instruction>
			<instruction>      &apos; Character position was not more than 0 - set LeftDots to an invalid value so rename fails</instruction>
			<instruction>      LeftDots = "(8SCaO4fOzy5hy4Fs2CxBGCPy6oAl2Hp988ZH9C3toox0HWlmOA)"</instruction>
			<instruction>   end if</instruction>
			<instruction>   &apos; ----------------------------------------------------------------------------------------</instruction>
			<instruction />
			<instruction>   Dim ExtractAmt         &apos; ExtractAmt will be the number of characters to remove from the file name</instruction>
			<instruction>   ExtractAmt = strRightNum</instruction>
			<instruction />
			<instruction>   &apos; Assemble EXTRACTION dots ----------------------------------------</instruction>
			<instruction>   Dim ExtractDots      &apos; ExtractDots will become the second RegEx tagged match</instruction>
			<instruction>   ExtractDots = ""   &apos; Set ExtractDots to a null value to start</instruction>
			<instruction>   I = 0</instruction>
			<instruction>   if ExtractAmt > 0 then</instruction>
			<instruction>      While I < ExtractAmt</instruction>
			<instruction>         ExtractDots = "." & ExtractDots</instruction>
			<instruction>         I = I+1</instruction>
			<instruction>      Wend</instruction>
			<instruction>            ExtractDots = "(" & ExtractDots & ")"</instruction>
			<instruction>      else</instruction>
			<instruction>      &apos; Amount to extract was not more than 0 - set ExtractDots to an invalid value so rename fails</instruction>
			<instruction>      ExtractDots = "(loY8TbEarTKFM5jKdd6pOoqAtm8ptx1zN2lx0ooB)"</instruction>
			<instruction>   end if</instruction>
			<instruction>   &apos; ----------------------------------------------------------------------------------------</instruction>
			<instruction />
			<instruction>   Dim regex</instruction>
			<instruction>   &apos; Create a RegExp object</instruction>
			<instruction>   Set regex = new RegExp</instruction>
			<instruction />
			<instruction>   &apos;if fIsFolder = True then   &apos; If it&apos;s a folder ---------------------------------------</instruction>
			<instruction>      regex.Pattern = "(.*)" & ExtractDots & LeftDots</instruction>
			<instruction>   &apos;else            &apos; If it&apos;s a file -----------------------------------------</instruction>
			<instruction>      &apos;regex.Pattern = LeftDots & ExtractDots & "(.*\..*)"</instruction>
			<instruction>   &apos;end if</instruction>
			<instruction />
			<instruction>   strNameOnly = regex.Replace(strNameOnly, "$1$3") &apos;</instruction>
			<instruction>   strNewName = strNameOnly & strExtension</instruction>
			<instruction>   </instruction>
			<instruction>End Function</instruction>
		</function>
	</button>
</button>
Einen neuen Text NACH einer beliebigen Stelle von VORNE einfügen
ERKLÄRUNG: TEMPNAME ist ein Platzhalter der durch die gewünschten neuen Zeichen ersetzt wird.

Code: Alles auswählen

@set X = {dlgstring|NACH welcher Stelle soll eingefügt werden ?}
Rename REGEXP PATTERN "(.)(.+)#{$X}" TO "\2\1" AUTORENAME
Rename PATTERN "*" TO "TEMPNAME*" AUTORENAME
Select TEMPNAME*
Rename REGEXP PATTERN "(.+)(.)#{$X}" TO "\2\1" AUTORENAME
Rename FINDREP PATTERN "TEMPNAME" TO  "{dlgstring|WAS soll eingefügt werden ?}" AUTORENAME
@NODESELECT
Einen neuen Text VOR einer beliebigen Stelle von HINTEN einfügen
ERKLÄRUNG: TEMPNAME ist ein Platzhalter der durch die gewünschten neuen Zeichen ersetzt wird.

Code: Alles auswählen

@set X = {dlgstring|VOR welcher Stelle soll eingefügt werden ?}
Rename TYPE=files REGEXP PATTERN "(.+)(.)(\..*)#{$X}" TO "\2\1\3" AUTORENAME
Rename TYPE=dirs REGEXP PATTERN "(.+)(.)#{$X}" TO "\2\1" AUTORENAME
Rename TYPE=files PATTERN "*.*" TO "*TEMPNAME.*" AUTORENAME
Rename TYPE=dirs Pattern "*" TO "*TEMPNAME" AUTORENAME
Select *TEMPNAME
Rename TYPE=files REGEXP PATTERN "(.)(.+)(\..*)#{$X}" TO "\2\1\3" AUTORENAME
Rename TYPE=dirs REGEXP PATTERN "(.)(.+)#{$X}" TO "\2\1" AUTORENAME
Rename FINDREP PATTERN "TEMPNAME" TO "{dlgstring|WAS soll eingefügt werden ?}" AUTORENAME
@NODESELECT
Eine gewünschte Anzahl von Zeichen NACH einer beliebigen Stelle von VORNE entfernen

Code: Alles auswählen

@set X = {dlgstring|NACH welcher Stelle soll entfernt werden ?}
Rename REGEXP PATTERN "(.)(.+)#{$X}" TO "\2\1" AUTORENAME
Rename PATTERN "*" TO "TEMPNAME*" AUTORENAME
Select TEMPNAME*
Rename REGEXP PATTERN "(........).(.+)#{dlgstring|Wieviele Stellen sollen entfernt werden ?}" TO "\1\2" AUTORENAME
Rename PATTERN "*" TO "TEMPNAME*" AUTORENAME
Select TEMPNAME*
Rename REGEXP PATTERN "(.+)(.)#{$X}" TO "\2\1" AUTORENAME
Rename FINDREP PATTERN "TEMPNAME" TO "\~" AUTORENAME
@NODESELECT
Eine gewünschte Anzahl von Zeichen VOR einer beliebigen Stelle von HINTEN entfernen

Code: Alles auswählen

@set X = {dlgstring|VOR welcher Stelle soll entfernen ?}
@set Y = {dlgstring|WIEVIELE Stellen sollen entfernt werden ?}
Rename TYPE=files REGEXP PATTERN "(.+)(.)(\..*)#{$X}" TO "\2\1\3" AUTORENAME
Rename TYPE=dirs REGEXP PATTERN "(.+)(.)#{$X}" TO "\2\1" AUTORENAME
Rename TYPE=files PATTERN "*.*" TO "*TEMPNAME.*" AUTORENAME
Rename TYPE=dirs PATTERN "*" TO "*TEMPNAME" AUTORENAME
Select *TEMPNAME
Rename TYPE=files REGEXP PATTERN "(.+).(.*)(........)(\..*)#{$Y}" TO "\1\3\4\5" AUTORENAME
Rename TYPE=dirs REGEXP PATTERN "(.+).(.*)(........)#{$Y}" TO "\1\3\4" AUTORENAME
Select *TEMPNAME
Rename TYPE=files REGEXP PATTERN "(.)(.+)(\..*)#{$X}" TO "\2\1\3" AUTORENAME
Rename TYPE=dirs REGEXP PATTERN "(.)(.+)#{$X}" TO "\2\1" AUTORENAME
Rename FINDREP PATTERN "TEMPNAME" TO "\~" AUTORENAME
@NODESELECT
Neuer Text VOR Name einfügen (ABCXYZ.txt => Neuer Text ABCXYZ.txt) ODER (NeuerTextABCXYZ.txt) ODER ...
ERKLÄRUNG: @NODESELECT bewirkt, daß die Ordner und/oder Dateien nach dem Umbenennen markiert bleiben,
das ist in sofern relevant, daß man danach direkt den nächsten Schalter zum weiteren Umbenennen ansprechen kann.

Code: Alles auswählen

Rename PATTERN "*" TO "{dlgstring|Eingabe}*" AUTORENAME
@NODESELECT
Neuer Text HINTER Name einfügen (ABCXYZ.txt => ABCXYZ Neuer Text.txt) ODER (ABCXYZNeuerText.txt) ODER ...
ERKLÄRUNG: {dlgstring|Eingabe} öffnet ein Eingabefenster, in dem der Nutzer den gewünschten Neuen Namen eingeben kann.

Code: Alles auswählen

@set X = {dlgstring|Eingabe}
Rename TYPE=files PATTERN "*.*" TO "*{$X}.*" AUTORENAME
Rename TYPE=dirs Pattern "*" TO "*{$X}" AUTORENAME
@NODESELECT
Teil des Namens DURCH Neuer Text ersetzen (ABCXYZ.txt => ABC Neuer Text.txt) ODER ( Neuer Text XYZ.txt) ODER ...
ERKLÄRUNG: {dlgstring|Eingabe} Eingabe ist hier nur der Titel im Eingabefenster, läßt sich also einfach durch alles ersetzen.

Code: Alles auswählen

Rename FINDREP PATTERN "{dlgstring|Eingabe suchen}" TO "{dlgstring|Eingabe ersetzen}" AUTORENAME
@NODESELECT
Teil des Namens löschen (ABCXYZ.zxz => AYZ.txt)
ERKLÄRUNG: "\~" steht sozusagen für nichts, ich glaube, man könnte auch einfach "" schreiben.

Code: Alles auswählen

Rename FINDREP PATTERN "{dlgstring|Eingabe suchen}" TO "\~" AUTORENAME
@NODESELECT
Name IN Neuer Name umbenennen (ABCXYZ.txt => Neuer Name.txt) ODER ...
ERKLÄRUNG: Hiermit kann man z.B. einen Ordner, ein Bild und eine Textdatei gleichzeitig in einen Namen umbenennen.

Code: Alles auswählen

@set X = {dlgstring|Eingabe}
Rename TYPE=files REGEXP PATTERN ".*(\..*)" TO "{$X}\1" AUTORENAME
Rename TYPE=dirs REGEXP PATTERN ".*" TO "{$X}\1" AUTORENAME
@NODESELECT
Eine gewünschte Anzahl von Zeichen VOR Name entfernen

Code: Alles auswählen

Rename REGEXP PATTERN ".(.+)#{dlgstring|Anzahl}" TO "\1\2" AUTORENAME
@NODESELECT
Eine gewünschte Anzahl von Zeichen HINTER Name entfernen

Code: Alles auswählen

@set X = {dlgstring|Anzahl}
Rename TYPE=files REGEXP PATTERN "(.+).(.*)(\..*)#{$X}" TO "\1\3" AUTORENAME
Rename TYPE=dirs REGEXP PATTERN "(.+).(.*)#{$X}" TO "\1\3" AUTORENAME
@NODESELECT
Eine gewünschte Anzahl von Zeichen von VORNE nach HINTEN verschieben (2010Album.txt => Album2010.txt)

Code: Alles auswählen

@set X = {dlgstring|Anzahl}
Rename TYPE=files REGEXP PATTERN "(.)(.+)(\..*)#{$X}" TO "\2\1\3" AUTORENAME
Rename TYPE=dirs REGEXP PATTERN "(.)(.+)#{$X}" TO "\2\1" AUTORENAME
@NODESELECT
Eine gewünschte Anzahl von Zeichen von HINTEN nach VORNE verschieben (Album2010.txt => 2010Album.txt)

Code: Alles auswählen

@set X = {dlgstring|Anzahl}
Rename TYPE=files REGEXP PATTERN "(.+)(.)(\..*)#{$X}" TO "\2\1\3" AUTORENAME
Rename TYPE=dirs REGEXP PATTERN "(.+)(.)#{$X}" TO "\2\1" AUTORENAME
@NODESELECT
Dateiendung ändern in eine beliebige andere Dateiendung (ABCXYZ.TXT => ABCXYZ.txt) ODER (ABCXYZ.txt => ABCXYZ.avi) ODER ...
ERKLÄRUNG: {dlgstring|Eingabe} öffnet ein Eingabefenster, in dem der Nutzer die gewünschte neue Dateiendung eingeben kann.

Code: Alles auswählen

Rename REGEXP PATTERN  "(.*)(\..*)" TO "\1.{dlgstring|Eingabe}" AUTORENAME
@NODESELECT
Dateiendung ändern in eine vorbestimmte andere Dateiendung (ABCXYZ.zip => ABCXYZ.cbr)
HINWEIS: Durch das ändern von .cbr läßt sich hier jede andere Dateiendung einfügen.

Code: Alles auswählen

Rename REGEXP PATTERN "(.*)(\..*)" TO "\1.cbr" AUTORENAME
@NODESELECT
ALLE ERSTEN Buchstaben Groß schreiben (ABC XYZ.txt => Abc Xyz.txt)

Code: Alles auswählen

Rename CASE=allwords
@NODESELECT
ALLE Buchstaben GROSS schreiben (aBcxYZ.txt => ABCXYZ.txt)

Code: Alles auswählen

Rename CASE=upper
@NODESELECT
ALLE Buchstaben klein schreiben (ABCXYZ.txt => abcxyz.txt)

Code: Alles auswählen

Rename CASE=lower
@NODESELECT
Vor jedem Großbuchstaben ein Leerzeichen einfügen (MaxMustermannWohnortHamburg.txt => Max Mustermann Wohnort Hamburg.txt)

Code: Alles auswählen

Rename REGEXP PATTERN "(.*)(([^A-Z ])([A-Z]+))(.*)#" TO "\1\3 \4\5" MATCHCASE AUTORENAME
@NODESELECT
Alle Unterstriche DURCH Leerzeichen ersetzen (Dies_ist_ein_Beispiel.txt => Dies ist ein Beispiel.txt)
HINWEIS: Das läßt sich durch einfaches austauschen der Parameter auch auf alle anderen Zeichen anwenden !

Code: Alles auswählen

Rename FINDREP PATTERN "_" TO " " AUTORENAME
@NODESELECT
Alle Leerzeichen entfernen (A B C X Y Z.txt => ABCXYZ.txt)
HINWEIS: Das läßt sich durch einfaches austauschen der Parameter auch auf alle anderen Zeichen anwenden !

Code: Alles auswählen

Rename FINDREP PATTERN " " TO "\~" AUTORENAME
@NODESELECT
Leerzeichen VOR und HINTER Zahlen einfügen (ABC2010XYZ.txt => ABC 2010 XYZ.txt)

Code: Alles auswählen

Rename REGEXP PATTERN "(.*)(([^0-9 ])([0-9]+)|([0-9]+)([^0-9 ]))(.*)#" TO "\1\3\5 \4\6\7" AUTORENAME
@NODESELECT
Leerzeichen VOR und HINTER Bindestrichen einfügen (01-Titel.txt => 01 - Titel.txt)

Code: Alles auswählen

Rename REGEXP PATTERN "(.*)(([^ ])(-)|(-)([^ ])|  )(.*)#" TO "\1\5\3 \4\6\7" AUTORENAME
@NODESELECT
Name in den Namen des übergeordneten Ordners umbenennen

Code: Alles auswählen

Rename TO "{parent}.{ext}" FILEINFO AUTORENAME
@NODESELECT
Zuletzt geändert von Joerg765 am 6. Jun 2010 06:03, insgesamt 11-mal geändert.

Benutzeravatar
Kundal
Moderator
Beiträge: 1341
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Kundal » 24. Apr 2010 14:49

@Joerg765:
Super Liste!

Editiert:

Zuletzt am 02.06.2010:
- 4 verbesserte Buttons zugefügt ("EINFÜGEN: Anzahl Zeichen an Position von Vorne/Hinten" und ENTFERNEN: "Anzahl Zeichen an Position von Vorne/Hinten")
- Alle Buttons die bereits in Jörgs Sammlung vorhanden sind gelöscht.

16.05.2010:
- Schalter Ordnerinhalt nach "Ordner Name" hinzugefügt
15.05.2010:
- Untermenü "Datum konvertieren" zugefügt. Vor der Benutzung sollte unbedingt der entsprechende Beitrag von mir gelesen werden: http://www.haage-partner.de/forum/viewt ... =17&t=3393
- "Titlecase" benötigt nicht mehr den Import der entsprechenden Vorlage.
Der Code ist jetzt im Button enthalten.
- Vorlage "Titlecase.orp aus Zipdatei entfernt.
- Alle in dem Menübutton von "Joerg765" enthaltenen Schalter aus meinem Button entfernt, bis auf die von mir selbst hier vorgestellten.
- Icons zugefügt (Nur in DOpus enthaltene Standardicons).
- Da Jörg die bessere Sortierung hat, habe ich diese übernommen, aber nur meine eigenen Buttons eingefügt.
Das erleichtert die Einsortierung meiner Schalter in die Sammlung von Jörg (empfohlen.)


Der Menübutton enthält alle von mir hier vorgestellten Schalter soweit sie (noch) nicht in der Sammlung von Jörg vorhanden sind (Stand 02.06.2010).

Ich habe mir mal die Mühe gemacht, das Ganze in einen einzigen Menübutton zu füttern, so daß man zum Ausprobieren nicht jeden Button einzeln anlegen muß.

Die Liste ist in 6 Untermenüs mit folgendem Inhalt eingeteilt (Schalter, die auch in Jörgs Sammlung enthalten sind, sind mit "***" gekennzeichnet):

1) EINFÜGEN
  • Zeichen an Position von Vorne
  • Zeichen an Position von Hinten
2) ENTFERNEN
  • Anzahl Zeichen an Position von Vorne
  • Anzahl Zeichen an Position von Hinten
3) UMBENENNEN
  • nach Vorlage "Titlecase"
  • Ordnerinhalt nach "Ordner Name"
4) DATUM KONVERTIEREN
  • ISO 8601 zum Anfang
  • DIN 1355 nach Hinten
  • DIN1355 nach ISO 8601
  • ISO 8601 nach DIN1355
5) MEDIA
  • MP3's nach ID3-Tags benennen
  • MP3's nach Tags ordnen
  • MP3's nach "Eigene Musik" sortieren
  • JPG's nach "Name Datum - Zeit"
  • JPG's nach "Nummer Ordner Datum - Zeit"
Dateianhänge
Schaltersammlung _umbenennen.zip
Enthält:
Schaltersammlung Umbenennen.dcf
(7.37 KiB) 210-mal heruntergeladen
Zuletzt geändert von Kundal am 2. Jun 2010 22:11, insgesamt 32-mal geändert.

Benutzeravatar
Kundal
Moderator
Beiträge: 1341
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Kundal » 24. Apr 2010 16:51

[b]Editiert:[/b] Der Button "MP3's nach Tags umbenennen und nach "Eigene Musik" verschieben" zeigt jetzt zusätzlich am Ende den fertigen Ordner "Meine Musik\Alben\Künstler\Album" im Ziellister an!

In einer Sammlung zum Umbenennen darf ein Schalterbeispiel für das Einbeziehen von Dateiinformationen wie ID3-Tags bei MP3 und Exif-Infos bei JPEG nicht fehlen. Deshalb hier drei Schalter, die MP3-Dateien auf Basis der ID3-Tags umbenennen. Voraussetzung ist natürlich, daß die Dateien vorher sinnvoll getaggt wurden. Die Schalter, die eine Ordnerstruktur anlegen sind nur dann sinnvoll einzusetzen,wenn wenn z.B. in den Tags immer der gleiche Künstler eingetragen ist. Bei "Various Artist" Alben landen die Dateien sonst in verschiedenen Ordnern.
Der folgende Befehl benennt MP3's nach folgendem Muster um:

Aus Xyz.mp3 wird "Tracknummer-Künstler-Album-Titel.mp3"

MP3's nach Tags benennen

Code: Alles auswählen

Rename FILEINFO PATTERN "*.mp3"  TO "{mp3track}-{mp3artist}-{mp3album}-{mp3title}.mp3"
Es ist auch möglich, automatisch eine Ordnerstruktur auf Basis der Tags anzulegen und die Dateien entsprechend zu verschieben. Der folgende Code würde neue Unterordner nach dem Muster "Künstler\Album" anlegen, alle markierten MP3's nach dem Muster "Tracknummer Titel.mp3" umbenennen und in den eben angelegten Order "Album" verschieben:

MP3's nach Tag benennen mit Ordnerstruktur

Code: Alles auswählen

Rename FILEINFO PATTERN "*.mp3"  TO "{mp3artist}\{mp3album}\{mp3track|#2} {mp3title}.mp3"
Anmerkung: "{mp3track|#2}" führt hier dazu, daß die Tracknummer 2-stellig eingefügt wird, also "01" statt "1"

Der dritte Befehl ist, finde ich der Clou: Er markiert automatisch den gesamten Ordnerinhalt, legt die Ordnerstruktur "Genre\Künstler\Album" an, verschiebt die nach "Tracknummer(2-stellig) Titel.mp3" umbenannten MP3's (plus eventuell vorhandene weitere Dateien wie coverart.jpg etc.) nach "Album", verschiebt dann das Ganze dorthin, wo ich meine Alben speichere (hier: "Eigene Musik\Alben", löscht auch noch den jetzt leeren Ursprungsordner und zeigt zuletzt den übergeordneten Ordner im Quellister und den Ordner Abum im Ziellister (Dualpath) an.
Wer will kann nach "rmdir {$OriginalSource}" in neuer Zeile noch den bevorzugten Player starten, um das Album als kleine Belohnung für die harte Arbeit abzuspielen.

Zum Beispiel für AIMP2:
C:\Programme\AIMP2\AIMP2.exe %* "%RENAME_TARGET%"
(Pfade mit Leerzeichen in Anführungsstriche setzen!)

MP3's nach Tags umbenennen und nach "Eigene Musik" verschieben

Code: Alles auswählen

@noexpandenv
@runmode hide
@set OriginalSource={sourcepath$|noterm}
Rename FILEINFO FROM "*.mp3" TO "{alias|mymusic\Alben}\{mp3genre}\{mp3artist}\{mp3album}\{mp3track|#2} {mp3title}.mp3"
Copy MOVE * TO "%RENAME_TARGET%"
Go PATH ".." DUALPATH "%RENAME_TARGET%"
rmdir {$OriginalSource}

@script vbscript
Option Explicit

Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")

Dim Shell
Set Shell = CreateObject("WScript.Shell")

Dim EnvVars
Set EnvVars = Shell.Environment("PROCESS")
EnvVars("RENAME_TARGET") = "zzzzz:\"

Function Rename_GetNewName(strFileName, strFilePath, fIsFolder, strOldName, ByRef strNewName)

   ' Fix any double \ chars resulting from empty tags (e.g. no genre).
   ' If we don't do this, things can get confused about the destination path.

   strNewName = Replace(strNewName, "\\", "\")

   ' Set the %RENAME_TARGET% environment variable to the folder we're moving the file to.
   ' This can be used in the main command above to go to the folder.
   ' Note that we use "@noexpandenv" at the top of the command; if we didn't then %RENAME_TARGET%
   ' would be expanded *before* this script had run, which obviously would not work.

   EnvVars("RENAME_TARGET") = fs.GetParentFolderName(strNewName)

End Function
Natürlich können die Befehle nach eigenen Wünschen editiert werden Für MP3's gibt es außer den bereits genannten noch weitere Tag-Einträge (z.B. {mp3year}). Eine vollständige Liste (auch für Exif-Infos) findet sich, wenn man in DOpus auf "Datei/Dateibefehle/Umbenennen" geht, dort ggfs. auf "Erweitert" klicken. Jetzt einen Haken bei "Dateiinformationsfeld aktivieren" setzen. Neben dem Feld "Neuer Name" auf das Pfeilsymbol klicken und unter Musik (bzw. Bilder) den gesuchten Eintrag anklicken trägt den Code ins Feld ein.

Zum Umbenennen von JPEG's nach Exif-Infos muss in den Befehlen der Teil PATTERN "*.mp3" durch PATTERN "*.jpg" und die Tag-Einträge durch entsprechende Einträge für Exif-Infos (z.B. {shootingtime}) ersetzt werden.

P.S.: Ich habe die hier vorgestellten Befehle zu dem Menübutton in meinem vorherigen Beitrag hinzugefügt. Sie sind dort im Untermenü "MEDIA" zu finden.
Zuletzt geändert von Kundal am 2. Jun 2010 22:14, insgesamt 4-mal geändert.

Benutzeravatar
Support
Site Admin
Beiträge: 3100
Registriert: 5. Apr 2003 14:21
Betriebssystem: Windows 7 & 10
Produkt: DOpus 11/12, R-Studio 8, Sawmill 8, RDI 6, MindGenius 6
Version DOpus: Pro
Wohnort: Frankfurt
Kontaktdaten:

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Support » 26. Apr 2010 00:56

Vielen Dank für diese schönen Beispiele und die Testfunktion. Ich würde mich sehr freuen, wenn ich diese auch in einem Tutorial zum Thema einbauen dürfte, auch gerne mit Namensnennung, wenn ich die entsprechende Freigabe hier im Forum oder per Mail an support(at)haage-partner.de erhalte.

Benutzeravatar
Kundal
Moderator
Beiträge: 1341
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Kundal » 26. Apr 2010 01:22

@Support:
Super Idee! Was meinen Anteil an der Sammlung angeht geht das völlig in Ordnung!

Zu meinem Menübutton hätte ich der Vollständigkeit halber noch die Idee, zwei weitere Untermenüs "Alle Dateien & Ordner" und "Alle Dateien" einzubauen in denen alle Schalter grundsätzlich auf den gesamten Ordnerinhalt (mit bzw. ohne Ordner) wirken, unabhängig davon, ob etwas markiert ist.
Wenn gewünscht würde ich mir diese Mühe machen...

Aber vielleicht reicht auch der Hinweis, daß man sich das mit "Rename *" und "Rename *.*" leicht selber basteln kann.

Joerg765
Beiträge: 98
Registriert: 12. Apr 2010 07:23
Betriebssystem: Windows 7 Home 64bit
Produkt: DOpus 11.3
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Joerg765 » 28. Apr 2010 10:26

@ Support:

Was mich betrifft, kannst Du das gerne in ein Tutorial umarbeiten,
allerdings habe ich diese Codes zum größten Teil eh nur zusammengetragen,
aus diesem und aus dem englischen Forum.

JÖRG

Joerg765
Beiträge: 98
Registriert: 12. Apr 2010 07:23
Betriebssystem: Windows 7 Home 64bit
Produkt: DOpus 11.3
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Joerg765 » 4. Mai 2010 13:33

@ Kundal:
da deine Buttons manchmal unnötigerweise Ordner ausschließen. (z.B. "Neuer Name VOR Name einfügen": "*.*" geändert zu "*")
DANKE dafür, das war mir gar nicht aufgefallen, habe es jetzt geändert.

JÖRG

Benutzeravatar
Kundal
Moderator
Beiträge: 1341
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Kundal » 4. Mai 2010 21:48

Editiert: Es muss nicht mehr die Umbenennen-Vorlage "Titlecase" importiert werden. Der Button enthält den gesamten Code.

...und noch'n Button...
Der folgende Button beruht auf einer Umbenennen-Vorlage von Steve Banham aus dem englischen Forum:
http://resource.dopus.com/viewtopic.php ... ase#p20642

TitleCase editiert und bereinigt Dateinamen in folgender Weise:

* Ersetzt %20 durch Leerstellen
* Entfernt mehrfache Leerstellen
* Ersetzt Unterstriche durch Leerstellen
* Entfernt Leerstellen an Anfang und Ende des Dateinamens
* Schreibt die Dateiendung klein
* Konvertiert nach True Titlecase (s.u.)
* Großbuchstabe nach Klammer
* Großbuchstabe nach Bindestrich
* Großbuchstabe nach Punkt
* Großbuchstabe nach "Zahl Leerstelle"

Der Button erledigt also diverse Dinge auf einmal und bewirkt eine weitgehend normale Schreibweise, weil er Groß- und Kleinschreibung gängiger Wörter berücksichtigt ("True Titlecase").
Die Vorlage enthält im Original eine Liste englischer Wörter die gewöhnlich klein geschrieben werden.
Diese Liste habe ich um deutsche Wörter erweitert. Es können natürlich nicht alle Verben berücksichtigt werden, sondern nur in Dateinamen häufig vorkommende Dinge wie z.B. "und" "an" "in" etc..
Falls jemand Vorschläge zur Erweiterung der Liste hat (Im Umbenennen-Dialog im Script nach der Liste suchen)...immer her damit.

Umbenennen nach Vorlage Titlecase

Code: Alles auswählen

@nodeselect 
Rename TO "*"

@script vbscript
option explicit

' ********************************************************
'  TitleCase by Steve Banham (tanis@dopus.com) 07-Apr-2007
'  Modified by Leo Davidson (www.pretentiousname.com)
' ********************************************************
'                    General Options
' ********************************************************
dim fOddChars
dim fMultiSpace
dim fUnderscore
dim fStripSpaces
dim fExtLCase
fOddChars = True        ' Replace %20 with spaces
fMultiSpace = True      ' Remove multiple spaces
fUnderscore = True      ' Replace "_" with a space
fStripSpaces = True     ' Strip leading/trailing spaces
fExtLCase = True        ' Make extension lower case
' ******************************************************
'                   TitleCase Options
' ******************************************************
' fTitleCase MUST be True for the other options in this
' section to work
' ******************************************************
dim fTitleCase
dim fParCap
dim fDashCap
dim fFullStopCap
dim fFirstNonNum
fTitleCase = True       ' Convert to true titlecase
fParCap = True          ' Capitalise after parenthesis
fDashCap = True         ' Capitalise after a dash
fFullStopCap = True     ' Capitalise after a full stop
fFirstNonNum = True	' Capitalise first non-numeric
' ******************************************************

Function Rename_GetNewName ( strFileName, strFullPath, _
		fIsFolder, strOldName, ByRef strNewName )

	' Write the name of the script to the Output window
	Dopus.OutputString "TitleCase by Steve Banham 07-Apr-2007"

	dim strExt
	dim iOldLength
	dim iNewLength
	dim strNameArray
	dim strTmpWord
	dim strTmpName
	dim x
	dim j
	dim i

	'Strip the filename extension for now
	if fIsFolder = False then
		if InStr(strNewName, ".") then
			strExt = Right(strNewName, Len(strNewName)-(InStrRev(strNewName, ".")-1))
			strNewName = Left(strNewName, InStrRev(strNewName, ".")-1)
			' Convert extension to lowercase while we're at it
			if fExtLCase = True then
				strExt = LCase(strExt)
			end if
		else
			strExt = ""
		end if
	end if

	' Replace "_" with spaces
	if fUnderscore = True then
		strNewName = Replace(strNewName, "_", " ")
	end if
	
	' Replace "%20" with spaces
	if fOddChars = True then
		strNewName = Replace(strNewName, "%20"," ")
	end if
	
	' Remove all multiple spaces
	if fMultiSpace = True then
		iNewLength = 0
		iOldLength = len(strNewName)
		Do While iOldLength > iNewLength
			iOldLength = len(strNewName)
			strNewName = Replace(strNewName,"  "," ")
			iNewLength = len(strNewName)
		Loop
	end if

	' Convert filename to TitleCase
	if fTitleCase = True then
		' Create an array from words in the filename
		strNameArray = split(strNewName, " ")

		' Now go through each item in the array and process it
		if ubound(strNameArray) > 0 then
			for x = lbound(strNameArray) to ubound(strNameArray)
	
				' Set all text to lower case to begin with
				strNameArray(x) = LCase(strNameArray(x))

				' Ignore articles, prepositions and conjunctions
				Select Case strNameArray(x)

					Case "ob"
					Case "was"
					Case "wie"
					Case "wer"
					Case "wo"
					Case "wann"
					Case "seit"
					Case "außer"
					Case "rechts"
					Case "links"
					Case "neben"
					Case "wenn"
					Case "weniger"
					Case "immer"
					Case "nie"
					Case "noch"
					Case "mehr"
					Case "vor"
					Case "nach"
					Case "hinter"
					Case "bis"
					Case "gegen"
					Case "vom"
					Case "beim"
					Case "zum"
					Case "zur"
					Case "wird"
					Case "war"
					Case "unter"
					Case "über"
					Case "um"
					Case "ohne"
					Case "mit"
					Case "aus"
					Case "von"
					Case "bei"
					Case "durch"
					Case "ist"
					Case "ein"
					Case "als"
					Case "oder"
					Case "und"
					Case "für"
					Case "auf"
					Case "das"
					Case "die"
					Case "der"				
					Case "a"
					Case "an"
					Case "at"
					Case "and"
					Case "but"
					Case "by"
					Case "for"
					Case "in"
					Case "into"
					Case "is"
					Case "of"
					Case "off"
					Case "on"
					Case "onto"
					Case "or"
					Case "the"
					Case "to"
					Case "if"
					Case "it"
					Case else
						if len(strNameArray(x)) > 0 then

							strTmpWord = Ucase(mid(strNameArray(x),1,1)) & mid(strNameArray(x),2,len(strNameArray(x))-1)

							' If the word begins with "(" then capitalise the next letter
							if mid(strNameArray(x),1,1) = "(" then
								if fParCap = True then
									strTmpWord = Ucase(mid(strNameArray(x),1,2)) & mid(strNameArray(x),3,len(strNameArray(x))-1)
								end if
							end if
							
							' If the word follows a "-" then it needs to be capitalised
							if mid(strNameArray(x),1,1) = "-" then
								if fDashCap = True then
									strTmpWord = Ucase(mid(strNameArray(x),1,2)) & mid(strNameArray(x),3,len(strNameArray(x))-1)
								end if
							end if

							strNameArray(x) = strTmpWord
						end if
				end Select
			next
		Else
			strNameArray(0) = LCase(strNameArray(0))
		End if

		' Make sure the first word is capitalised
		strTmpWord = Ucase(mid(strNameArray(0),1,1)) & mid(strNameArray(0),2,len(strNameArray(0))-1)
		strNameArray(0) = strTmpWord

		' Clear the new name variable
		strNewName = ""

		' Rebuild the array into one string
		For x = lbound(strNameArray) To ubound(strNameArray)
			strNewName = strNewName & strNameArray(x) & " "
		Next

		' Capitalise after - when it's in the middle of words
		' Capitalise after - when it's between words
		if fDashCap = True then
			For j = 1 to len(strNewName)
				if mid(strNewName,j,1) = "-" then
					strTmpName = strTmpName & mid(strNewName,j,1)
					j=j+1
					if mid(strNewName,j,1) = " " then
						strTmpName = strTmpName & mid(strNewName,j,1)
						j=j+1
					end if
					strTmpName = StrTmpName & Ucase(mid(strNewName,j,1))			
				else
					strTmpName = strTmpName & mid(strNewName,j,1)
				end if
			Next
			strNewName = strTmpName
			strTmpName = ""
		end if			

		' Capitalise after full stops in the middle of and between words
		if fFullStopCap = True then
			For i = 1 To len(strNewName)
				if mid(strNewName,i,1) = "." then
					strTmpName = strTmpName & mid(strNewName,i,1)
					i=i+1
					if mid(strNewName,i,1) = " " then
						strTmpName = strTmpName & mid(strNewName,i,1)
						i=i+1
					end if
					strTmpName = StrTmpName & Ucase(mid(strNewName,i,1))			
				else
					strTmpName = strTmpName & mid(strNewName,i,1)
				end if
			Next
			strNewName = strTmpName
			strTmpName = ""
		end if

		' Capitalise first non-numeric, non-space character.
      		' This is for music files like "07 By My Side.flac" which don't have a dash after their track numbers.
		if fFirstNonNum = True then
			For i = 1 to len(strNewName)
         			if (not IsNumeric(mid(strNewName,i,1))) and mid(strNewName,i,1) <> " " then
            				strNewName = mid(strNewName,1,i-1) & Ucase(mid(strNewName,i,1)) & mid(strNewName,i+1)
            				exit for
         			end if
      			Next
		end if
	end if
	
	' Strip leading/trailing spaces
	if fStripSpaces = True then
		strExt = Trim(strExt)
		strNewName = Trim(strNewName)
	end if
	
	' Rejoin the name and extension and we're finished
	strNewName = strNewName & strExt
								
End Function
Dieser Button ist im Menübutton in meinem ersten Post (Post #3) enthalten.
Zuletzt geändert von Kundal am 2. Jun 2010 22:16, insgesamt 2-mal geändert.

Benutzeravatar
Kundal
Moderator
Beiträge: 1341
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Kundal » 6. Mai 2010 11:14

Ich habe der Schaltersammlung im Menübutton 4 weitere Buttons hinzugefügt, die aus 2 Threads hier im Forum stammen.

Hier die neuen Buttons:

1) Dateien Nummerieren (Nummeriert Dateien + Ordner mit 2-stelliger führender Nummer)

2) Umbenennen und nummerieren (Benennt Dateien + Ordner um und nummeriert sie mit Optionen für "sequentielles Nummerieren")

Den Code für diese beiden Buttons findet ihr hier:
http://www.haage-partner.de/forum/viewt ... =25&t=3382

3) EINFÜGEN: Zeichen an Position von Vorne (Fügt Zeichen nach der gewählten Stelle im vorhandenen Namen ein)

4) ENTFERNEN: Anzahl Zeichen an Position von Vorne (Löscht nach einzugebender Position von vorne die einzugebende Anzahl von Zeichen aus den bestehenden Namen)

Diese beiden Buttons stammen aus diesem Thread:
http://www.haage-partner.de/forum/viewt ... =25&t=3375

Button 1) und 2) findet ihr unter "DURCHNUMMERIEREN" in Jörgs Sammlung (Post #1).
Button 3) und 4) findet ihr in meiner Schaltersammlung (Post #3)
Zuletzt geändert von Kundal am 2. Jun 2010 22:35, insgesamt 1-mal geändert.

Benutzeravatar
Kundal
Moderator
Beiträge: 1341
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Kundal » 9. Mai 2010 03:52

Ich habe einen weiteren Button (leicht modifiziert) aus diesem Thread hinzugefügt:

http://www.haage-partner.de/forum/viewt ... =25&t=3388

Der Button hängt an den bestehenden Datei- bzw. Ordnernamen das aktuelle Datum nach folgendem Muster an:
Name - TT.MM.JJJJ[.ext]

Aktuelles Datum an bestehenden Namen anhängen

Code: Alles auswählen

@nodeselect 
Rename Type=files PATTERN="*.*" TO="* - {dateu|dd.MM.yyyy}.*"
Rename Type=dirs PATTERN="*" TO="* - {dateu|dd.MM.yyyy}"
Ich habe den Code so geschrieben, daß man das Datumsformat leicht ändern kann, indem man die Zeichenfolge hinter TO=" ändert.
TO="{dateu|dd-MM-yyyy} *.*" würde zum Beispiel TT-MM-JJJJ Name.ext für Dateien ergeben.
{dateu|dddd dd.MMMM.yyyy} würde Wochentag TT.Monat.JJJJ ergeben.
ddd bzw. MMM ergibt Wochentag bzw. Monat abgekürzt.

Wer auch noch die Zeit einbauen möchte kann {time|HH-mm-ss} dranhängen.

Der Button ist in der Schaltersammlung von Jörg (Post #1) unter "Datum (Aktuell)" zu finden.
Zuletzt geändert von Kundal am 2. Jun 2010 22:39, insgesamt 1-mal geändert.

Benutzeravatar
Kundal
Moderator
Beiträge: 1341
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Kundal » 9. Mai 2010 11:32

@Joerg765:

Habe grad deinen Menübutton oben entdeckt.
Machen wir jetzt einen Wettbewerb, wer den schönsten hat?


Was die Sortierung angeht, gebe ich mich auf jeden Fall geschlagen! Deine ist weitaus besser!

Für mich selbst habe ich das sofort übernommen.
Hier im Forum bleibe ich mal bei meiner alten Version, es sei denn wir können uns auf eine gemeinsame einigen.

Mir fehlen bei dir aber die Tooltips, die habe ich von meinen Buttons übernommen. Finde ich gerade hier im Forum wichtig, weil ein User der sich das herunterlädt möglichst genau wissen sollte was passiert, wenn er auf einen Button drückt. Da ist Platz für ausführliche Erklärungen.

Das Kennzeichnen mit [Eingabe] und [Anzahl] finde ich zwar durchaus sinnvoll, für mich sind die Namen dadurch aber zu lang. Ich habe das lieber in den Tooltips, weil die Menü-Popups sonst so breit werden. Kann man ja auch erstmal nutzen, bis man seine Buttons kennt und dann kürzen.

Die Abteilung "Extras" habe ich bei mir komplett nach "Umbenennen" verschoben und statt dessen "Media" angelegt für MP3, JPG & Co.

Ausserdem habe ich einige Beschreibungen gändert, weil sie mir zu lang waren (z.B. an beliebiger Stelle ersetzt durch an "Position") und weil ich das ständige GROSSSCHREIBEN von VON und NACH nicht mag. Aber das kann ja jeder für sich entscheiden

Die Icons direkt ins Verzeichnis C:\ zu legen geht finde ich gar nicht! Mindestens C:\Icons\ sollte es schon sein. Mein Pfadvorschlag wäre etwas wie "/mydocuments\DOpus\Icons\". Das landet bei jedem in "Eigene Dateien".
Ich selbst habe mir einen Ordner "C:\Programme\DOpusTools\" angelegt wo ich alle Commandline-Tools wie setclip.exe, Textmining Tool, DopGoogle, WmaAlbumArtist usw. abgelegt habe, die ich nur mit DOpus nutze. Da gibt's auch einen Ordner für eigene Icons.

Ansonsten sind ja auch ein paar "Neue" dabei, die hier noch nicht sind.
Die unter "Datum" fand ich sehr speziell. Mit Tooltips wäre schneller klar, was die bewirken.
Da fehlte mir auch noch der aus meinem vorigen Post in der Liste.

Ein Button, der das Datumsformat automatisch findet, auch wenn's nicht am Anfang steht (z.B. finde 8 Nummern, die mit 190 bis 201 anfangen) und dann beliebig umformatiert wäre klasse oder?
Sowas sollte man natürlich nur anwenden, wenn man vorher sicherstellt, das dadurch nicht andere enthaltene Zahlenfolgen zerschlagen werden.
Zuletzt geändert von Kundal am 9. Mai 2010 14:21, insgesamt 1-mal geändert.

Benutzeravatar
Kundal
Moderator
Beiträge: 1341
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Kundal » 9. Mai 2010 13:01

Editiert: Der zweite Button funktioniert jetzt auch wenn der Ordnername mehr als 2 durch Leerstellen getrennte Namensteile vor der Jahreszahl enthält.

Hier ein paar Beispiele zum Umbenennen von JPG's mit Hilfe von enthaltenen Exif-Informationen:

In der einfachsten Form will ich nur z.B. das Aufnahmedatum an den bestehenden Dateinamen anhängen.
Der erste Button würde eine Datei "Test.jpg" umbenennen nach "Test So 09.05.2010 - 12-40-41"

JPG's nach "Name - Aufnahmedatum/Zeit" umbenennen

Code: Alles auswählen

@nodeselect 
Rename FILEINFO CASE=extlower PATTERN="*.*" TO="* {shootingtime|D#ddd dd.MM.yyyy} - {shootingtime|T#HH-mm-ss}.*"
Meine Fotos landen gewöhlnich in einem Ordner mit einem Namen wie "Irland 2003".
Dafür habe ich mir einen Button gebaut, der aus dem Ordnernamen das "2003" entfernt, weil ja im Datum enthalten.
Ausserdem finde ich nützlich, die Dateien zusätzlich zu nummerieren.

Die Datei "Test.JPG" im Ordner "Irland 2003" würde hiermit also in "001 Irland So 29.06.2003 - 13-40-31.jpg" umbenannt
Hier mein spezieller Button:

JPG's nach Ordnernamen benennen und nummerieren

Code: Alles auswählen

@nodeselect 
@set Start={dlgstring|Nummer der ersten Datei (durch führende Nullen Anzahl der Stellen definieren):|0}
Rename FILEINFO CASE=extlower NUMBER={$Start} BY=1 REGEXP PATTERN="(.*)\.(.*)" TO="[#] {parent} {shootingtime|D#ddd dd.MM.yyyy} - {shootingtime|T#HH-mm-ss}.\2"
Rename REGEXP PATTERN="(.+) ([0-9]+) (.+)" TO="\1 \3"
Wo man weitere Exif-Info Codes findet und wie man das Datumsformat ändert hatte ich ja in vorherigen Posts schon beschrieben.

Beide Buttons sind in meinem Menübutton der "Schaltersammlung Umbenennen" (Post #3) enthalten.
Zuletzt geändert von Kundal am 2. Jun 2010 22:40, insgesamt 4-mal geändert.

Joerg765
Beiträge: 98
Registriert: 12. Apr 2010 07:23
Betriebssystem: Windows 7 Home 64bit
Produkt: DOpus 11.3
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Joerg765 » 9. Mai 2010 18:08

@ Kundal:

Du hast Recht, mit Tooltips macht es mehr Sinn.

Die Datum-Funtionen sind speziell auf meine Wünsche angepasst,
deshalb hatte ich auch überlegt, sie hier im Forum wegzulassen.
Habe sie jetzt etwas abgeändert, vielleicht ist es so verständlicher.

Die ICONs kann ja jeder an einen anderen Ort speichern,
er muß halt nur den CODE dementsprechend anpassen.
Das geht im Text-Editor durch SUCHEN und ERSETZEN ja ganz einfach.

JÖRG
Zuletzt geändert von Joerg765 am 2. Sep 2010 20:32, insgesamt 1-mal geändert.

Benutzeravatar
Kundal
Moderator
Beiträge: 1341
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Schalter-Sammlung: (mehrfaches) Umbenennen

Beitrag von Kundal » 9. Mai 2010 19:03

Die Jahreszahl wird ja in ja in meinem Code erst aus dem fertigen Namen gelöscht.

Also z.B. aus: "001 Irland 2003 So 29.06.2003 - 13-40-31.jpg" soll die erste "2003" gelöscht werden.

Das mache ich in der letzten Zeile hiermit (meine erste ernsthafte Beschäftigung mit den REGEXP's, sonst habe ich nur "geklaut".) :

Code: Alles auswählen

Rename REGEXP PATTERN="(.*)\ (.*)\ (.*)\ (.*)\ (.*)\ -\ (.*)(.*)" TO="\1 \2 \4 \5 - \6.\7"
Der lange REGEXP-String lässt sich doch sicher kürzen oder?

Funktionieren tut es für meine Bedürfnisse ja. Aber eben nur dann, wenn der Name exakt so aufgebaut ist, was ja nach dem vorherigen Befehl sicher der Fall ist (es sei denn der Ordner hat z.B. drei durch Leerstellen getrennte Namensteile).

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste