Umbenennen: an beliebiger Stelle einfügen

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

Re: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Joerg765 » 7. Mai 2010 09:52

@ Kundal:

Eine ähnliche Idee wie aussieboykie hatte ich auch schon, komme aber zu keinem Ergebnis.
Man müßte IF THEN einbauen, dann könnte es klappen. Damit kenne ich mich aber nicht aus.

In etwa so:

@set X = {dlgstring|Anzahl}
IF X = 1 THEN Rename REGEXP PATTERN "(.+)" TO "{dlgstring|Einagabe}\1"
IF X = 2 THEN Rename REGEXP PATTERN "(.)(.+)" TO "{dlgstring|Einagabe}\1"
IF X = 3 THEN Rename REGEXP PATTERN "(..)(.+)" TO "{dlgstring|Einagabe}\1"
IF X = 4 THEN Rename REGEXP PATTERN "(...)(.+)" TO "{dlgstring|Einagabe}\1"
IF X = 5 THEN Rename REGEXP PATTERN "(....)(.+)" TO "{dlgstring|Einagabe}\1"

JÖRG
Zuletzt geändert von Joerg765 am 2. Sep 2010 20:44, insgesamt 4-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: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Kundal » 7. Mai 2010 10:43

@Joerg765:

Puh, das ist mir jetzt richtig peinlich!
Eigentlich achte ich sehr darauf, solche Fehler zu vermeiden.

Leider kann man in der englischen "Help % Support" Sektion nicht selbst seine Posts editieren. Habe aber sofort den Admin gebeten, das für mich zu tun. Die sind da gewöhnlich schnell mit sowas.

Schön, daß du nichts dagegen hast, daß ich deine Codes dort poste. Ich fand, der Erfinder der Punkte-Lösung "JohnZeman" und die englischen User haben auch Anspruch darauf, die Lösungen zu erhalten.
Eigentlich ist das ganze ja eine tolle Kooperation englischer und deutscher User und deine Autoschaft habe ich ja deutlich hervorgehoben.
Auf keinen Fall will ich mich mit fremden Federn schmücken.

Das Umbenennen von "JOERG765" in "TEMPNAME" fand ich gerade im englischen Forum wichtig, weil so jeder Leser im Code unmittelbar verstehen kann, welchem Zweck das dient.

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

Re: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Joerg765 » 7. Mai 2010 11:08

@ Kundal:

Was das JOERG765 angeht, so gefällt mit TEMPNAME auch besser. Ich brauchte nur erstmal einen Platzhalter,
der für Datei- oder Ordnernamen NIE vorkommt.
Denn die Dateien und Ordner werden ja während des Vorgangs UMBENANNT. So kam ich auf JOERG765,
da es geradezu unwahrscheinlich ist, daß ein Benutzer dieses CODEs Dateien auf seiner Festplatte hat, die mit JOERG765 anfangen.

Ich werde das TEMPNAME auch verwenden, allerdings muß Du darauf achten, daß das im 3. CODE nur zufällig funktioniert,
da JOERG765 und TEMPNAME beide 8 Stellen haben. Denn in dem CODE sind die 8 Stellen zum Umbennen wichtig.
Sollte man ein anderen Platzhalter verwenden wollen, so muß man die Anzahl der Punkte ändern:

Code: Alles auswählen

Rename REGEXP PATTERN "(........).(.+)#{dlgstring|Wieviele Stellen ?}" TO "\1\2" AUTORENAME
JÖRG
Zuletzt geändert von Joerg765 am 2. Sep 2010 20:44, 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: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Kundal » 7. Mai 2010 11:18

@Joerg:

Habe deinen beiden "Neuen" grad mal getestet. Ausser einem kleinen Schreibfehler ("Einagabe" statt "Eingabe") in beiden Buttons ist mir aufgefallen, daß die bei Dateien gnadenlos auch in die Erweiterung hinein einfügen.
Ausserdem sollte man die Buttons nicht nebeneinander anordnen, weil man sonst schnell mal von dem einen Poup-Menü in das andere verrutscht und dann statt von hinten von vorne einfügt, wenn man nicht aufpasst.

Ansonsten funktionieren sie bei Dateien und Ordnern gut, auch mit Leerstellen.

Insgesamt überzeugt mich deine erste Lösung aber wesentlich mehr.
Denn in dem CODE sind die 8 Stellen zum Umbennen wichtig.
Gut zu wissen...Danke
Deshalb immer vorsichtig beim ändern eines CODEs
Normalerweise teste ich gründlich bevor ich etwas poste. Nach einem chaotischen Arbeitstag war ich gestern wohl etwas unkonzentriert.
ACHTUNG: Funktioniert erstmal nur mit Ordnern, mit Dateien kommt später ....
Tut's bei mir auch bei Dateien, eben auch in die Dateiendung hinein

Die Codes im englischen Forum wurden jetzt korrigiert und funktioneren!

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

Re: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Joerg765 » 7. Mai 2010 12:19

@ Kundal:

DANKE für das Testen der Menü-Schalter. Du hast recht, die funktionieren nicht richtig.
Ich habe nie getestet, was passiert, wenn die Datei z.B. nur 4 Buchstaben hat, ich aber an 6. Stelle einfüge.

Kannst mal sehen, vorhin habe ich noch geschrieben, ich will daß meien CODEs funktionieren, wenn mein Name dabei steht,
und schon passiert mir selber so ein Fehler.

Also noch mal DANKE.

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: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Kundal » 8. Mai 2010 01:42

Hier ist jetzt die Lösung von "JohnZeman" aus dem englischen Forum:

Der Button nutzt VB-Script. Es gibt nur eine Dialogbox, in der man sowohl die Zahl für "Anzahl Stellen von Links" als auch den einzugebenden Text eingibt, durch ein Komma getrennt. Die Eingabe "3, Text" würde also " Text" (mit Leerzeichen) ab der dritten Stelle einfügen.

Hier der Button:
Code-Update auf die neueste Version am 05.06.2010

Zeichen an eingegebener Position einfügen

Code: Alles auswählen

Rename TO="{DlgStringS|AN welcher Stelle soll etwas eingefügt werden ?\n\ndurch ein Komma getrennt\n\nWAS soll eingefügt werden ?|2,Neuer Text}" AUTORENAME
@nodeselect 

@script vbscript
option explicit

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

   Dim strNameOnly
   Dim strExtension
   Dim intComPos   ' Location of the leftmost comma in dialog box entry
   Dim strText   ' Extracted Text from dialog box entry
   Dim strCount   ' Extracted number (of places from left) from dialog box entry

   ' If we're renaming a file then remove the extension from the end and save it for later.
   if fIsFolder or 0 = InStr(strFileName,".") then
      strExtension = ""
      strNameOnly = strFileName
   else
      strExtension = Right(strFileName, Len(strFileName)-(InStrRev(strFileName,".")-1))
      strNameOnly = Left(strFileName, InStrRev(strFileName,".")-1)
   end if

   ' Find the leftmost comma
   intComPos = InStr(strNewName,",")
   if intComPos > 0 then
      strCount = Trim(Left(strNewName, intComPos-1))
      strText = Right(strNewName,Len(strNewName)-intComPos)
   end if

     Dim I
   Dim Dots
   Dots = ""   

   if CInt(strCount) > 0 then
       I = 1
       While I < CInt(strCount)
      Dots = Dots & "."
      I = I+1
       Wend
      Dots = "(^" & Dots & ")"
   else
      ' Character position was not more than 0 - set LeftDots to an invalid value so rename fails
      Dots = "(8SCaO4fOzy5hy4Fs2CxBGCPy6oAl2Hp988ZH9C3toox0HWlmOA)"
   end if
      
   Dim regex
   ' Create a RegExp object
   Set regex = new RegExp
   regex.Pattern = Dots & "(.*)"
   
   strNameOnly = regex.Replace(strNameOnly, "$1" & strText & "$2")
   strNewName = strNameOnly & strExtension

   End Function 

Bitte die aktuellen Versionen der Buttons (7 Posts weiter in diesem Thread) herunterladen!
Zuletzt geändert von Kundal am 5. Jun 2010 13:46, insgesamt 2-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: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Joerg765 » 8. Mai 2010 13:44

Na also, geht doch !

Das funktioniert super. Und das mit nur einem Eingabefenster.
Anfangs gewöhnungsbedürftig, aber so nach und nach gefällts mit immer besser.

DANKE an alle beteiligten, der CODE läßt sich auch noch für weiteres umbasteln.

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: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Kundal » 8. Mai 2010 21:23

Update: Der Button funktioniert jetzt auch mit Ordnern!

...und hier ist der Button von "JohnZeman", der an gewählter Position die eingegebene Anzahl Zeichen löscht.
Code-Update auf neueste Version am 05.06.2010


Der Button funktioniert ebenfalls mit nur einer Dialogbox.
Die Eingabe von "2,5" würde also ab der zweiten Stelle 5 Zeichen löschen.

Anzahl Zeichen an gewählter Position löschen

Code: Alles auswählen

Rename TO="{DlgStringS|AN welcher Stelle soll etwas entfernt werden ?\n\ndurch ein Komma getrennt\n\nWIEVIELE Stellen sollen entfernt werden ?|2,5}" AUTORENAME
@nodeselect
@script vbscript
option explicit

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

   Dim strNameOnly
   Dim strExtension
   Dim intComPos      ' Location of the leftmost comma in dialog box entry
   Dim strLeftNum         ' Extracted left number from dialog box entry
   Dim strRightNum      ' Extracted right number from dialog box entry

   ' If we're renaming a file then remove the extension from the end and save it for later.
   if fIsFolder or 0 = InStr(strFileName,".") then
      strExtension = ""
      strNameOnly = strFileName
   else
      strExtension = Right(strFileName, Len(strFileName)-(InStrRev(strFileName,".")-1))
      strNameOnly = Left(strFileName, InStrRev(strFileName,".")-1)
   end if

      ' Find the leftmost comma in dialog box entry
   intComPos = InStr(strNewName,",")

   ' Extract the 2 numbers from dialog box entry
   if intComPos > 0 then
      strLeftNum = CInt(Trim(Left(strNewName, intComPos-1)))
      strRightNum = CInt(Trim(Right(strNewName,Len(strNewName)-intComPos)))
   end if

   Dim I         ' General counter variable
   Dim LeftDots      ' LeftDots will become the first RegEx tagged match
   LeftDots = ""      ' Set LeftDots to a null value to start

   ' Assemble LEFT regEx dots ----------------------------------------
   if strLeftNum > 0 then
      I = 1
      While I < strLeftNum
         LeftDots = LeftDots & "."
         I = I+1
      Wend
      LeftDots = "(^" & LeftDots & ")"
   else
      ' Character position was not more than 0 - set LeftDots to an invalid value so rename fails
      LeftDots = "(8SCaO4fOzy5hy4Fs2CxBGCPy6oAl2Hp988ZH9C3toox0HWlmOA)"
   end if
   ' ----------------------------------------------------------------------------------------

   Dim ExtractAmt         ' ExtractAmt will be the number of characters to remove from the file name
   ExtractAmt = strRightNum

   ' Assemble EXTRACTION dots ----------------------------------------
   Dim ExtractDots      ' ExtractDots will become the second RegEx tagged match
   ExtractDots = ""   ' Set ExtractDots to a null value to start
   I = 0
   if ExtractAmt > 0 then
      While I < ExtractAmt
         ExtractDots = ExtractDots & "."
         I = I+1
      Wend
            ExtractDots = "(" & ExtractDots & ")"
      else
      ' Amount to extract was not more than 0 - set ExtractDots to an invalid value so rename fails
      ExtractDots = "(loY8TbEarTKFM5jKdd6pOoqAtm8ptx1zN2lx0ooB)"
   end if
   ' ----------------------------------------------------------------------------------------

   Dim regex
   ' Create a RegExp object
   Set regex = new RegExp
   regex.Pattern = LeftDots & ExtractDots & "(.*)"
   
   strNameOnly = regex.Replace(strNameOnly, "$1$3")
   strNewName = strNameOnly & strExtension
   
   End Function
Bitte die aktuellen Versionen der Buttons herunterladen (5 Posts weiter in diesem Thread)

Übrigens:
Die Buttons sind auch Im Menübutton der "Schalter-Sammlung: (mehrfaches) Umbenennen" enthalten:
http://www.haage-partner.de/forum/viewt ... 817#p14817
Zuletzt geändert von Kundal am 5. Jun 2010 13:45, 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: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Joerg765 » 9. Mai 2010 09:01

@ Kundal:

Bei mir funktioniert der zweite CODE (zum Entfernen) nicht bei Ordnern. Ist das bei Dir auch so ?

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: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Kundal » 9. Mai 2010 10:41

Hallo Jörg,

Recht hast du! Ich dachte, ich hätte das getestet.

Bei deinen Lösungen musstest du ja beim "Löschen"-Button Befehle getrennt für Type=dirs und Type=files definieren.
Bei der "Einfügen"-Version war das unnötig.
Das scheint auch für VB-Script zu gelten. Hat John wohl nicht berücksichtigt.

Ich habe das schon bei ihm "reklamiert". Wird er sicher schnell beheben.
Bis dahin tut's dein Button ja auch hervorragend.

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: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Kundal » 9. Mai 2010 18:53

Jetzt funktioniert der Button "Zeichen nach gewählter Position löschen" auch mit Ordnern!

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

Re: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Joerg765 » 10. Mai 2010 10:29

@Kundal:

Die CODEs von JohnZeman sind beide DIE optimale Lösung, so wie ich es mir gewünscht hatte.

Allerdings ist mir aufgefallen, daß der 1. CODE etwas NACH beliebiger Stelle einfügt,
aber der 2. CODE etwas AN beliebiger Stelle entfernt.
Das mag auf den ersten Blick zwar völlig unwichtig sein,
aber bei einer aktiven Nutzung der beiden CODEs ist es doch leicht irritierend.
Wenn ich etwas NACH der 3. Stelle einfüge, dann würde ich es gerne auch wieder NACH der 3.Stelle entfernen.
Wobei es mir hier sogar lieber wäre, AN einer Stelle einzufügen und zu entfernen.

Leider verstehe ich den 1. CODE nicht, um ihn so umzuschreiben, daß er eben AN der Stelle einfügt.

Vielleicht kannst Du John ja mal im englischen Forum darauf ansprechen,
ob er mir den Gefallen tut, seinen CODE nochmal etwas für mich zu ändern.

Oder hast Du selber eine Idee ?

DANKE schon mal, 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: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Kundal » 30. Mai 2010 21:18

@Joerg765:

Nachdem ich mich ein wenig mit VBScript beschäftigt habe, habe ich den ersten Button für dich umgeschrieben, so daß er jetzt wie der "Löschen"-Button AN der gewählten Stelle einfügt.

Damit ist "0" in dieser Version eine ungültige Eingabe und bewirkt nichts.
"1" Fügt jetzt am Anfang ein.

Ich habe ausserdem beide Buttons so umgeschrieben, daß sie AN gewählter Position von Hinten löschen.

Eine weitere Verbesserung habe ich von "leo" aus dem englischen Forum übernommen:

Es ist jetzt nicht mehr möglich versehentlich Zeichen in die Dateiendung hineinzuschreiben oder Zeichen aus der Erweiterung zu löschen.

Alle vier Buttons:
  • Einfügen AN Position von Vorne
  • Einfügen An Position von Hinten
  • Entfernen AN Position von Vorne
  • Entfernen AN Position von Hinten
hier in einem Menübutton zum Download:[/b]
Dateianhänge
Zeichen_Einfügen_Entfernen.zip
Menübutton "Einfügen/Entfernen"
(2.14 KiB) 151-mal heruntergeladen

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

Re: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Joerg765 » 4. Jun 2010 20:11

@Kundal:

DANKE dafür, die Buttons funktionieren super.
Somit ist die Sammlung für mich komplett.
Ich wüßte nicht, was hier noch fehlen könnte.

Ich werde Deine Funktionen in den nächsten Tagen noch in meine Sammlung hier im Thread einfügen.

Weiter so, schöne Grüße, JÖRG.

Ach so, einen habe ich noch:
Mit den folgenden Button-Code kann man die Attribute ändern:

SetAttr CREATED=20080404
SetAttr MODIFIED=20080404

ABER wie füge ich die Uhrzeit dort mit ein ?
Das Datum wird in diesem Fall ja auf den 04.04.2008 gestellt.
Ich möchte aber auch die Uhrzeit ändern.
Habe schon so einiges versucht, aber das will alles nicht so wirklich.
Hast Du ne Idee ?

Schöne Grüße, JÖRG.
Zuletzt geändert von Joerg765 am 2. Sep 2010 20:46, 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: Umbenennen: an beliebiger Stelle einfügen

Beitrag von Kundal » 5. Jun 2010 10:08

@Joerg765:

Das hier funktioniert bei mir:

Code: Alles auswählen

SetAttr MODIFIED="2008-04-04 18:05:56"

Antworten

Wer ist online?

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