Kopieren Button mit autom. Versionshochzählung

German support forum

Moderators: sheep, Hacker, Stefan2, white

Post Reply
User avatar
mausebär
Member
Member
Posts: 161
Joined: 2008-03-25, 13:30 UTC
Location: Near Munich / Bavaria / Germany

Kopieren Button mit autom. Versionshochzählung

Post by *mausebär »

Ich hab hier ein Problem, welches ich mittels TC lösen wollte.
Jedoch haben alle meine Versuche bisher nicht funktioniert, daher die Bitte um Unterstützung.

Ich will mir im TC einen Button erzeugen, mit dem ich eine bestimmte Datei an einen anderen Ort kopieren kann. Existiert dort bereits eine Datei mit gleichem Namen, soll die neu kopierte Datei ein Versionsmerkmal (2), (3), (4), usw. im Dateinamen erhalten. Mit der Kopierfunktion (F5) kann man das händisch einstellen, daß die kopierte Datei umbenannt werden soll, falls eine Datei gleichen Namens vorhanden ist.

Ich will das aber ohne händische Eingabe automatisiert machen. Button drücken, es wird die Datei kopiert und automatisch die Datei mit neuer Versionsummer erstellt und nichts überschrieben.

Wie könnte ich das automatisieren...? :?:

Vielen dank für Beiträge,

Gruß
Wolfgang

User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 39415
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Re: Kopieren Button mit autom. Versionshochzählung

Post by *ghisler(Author) »

1. F5 drücken
2. "Optionen >>" anklicken
3. Pin-Knopf drücken, damit der Dialog immer voll geöffnet erscheint
4. Gewünschte Überschreiboption einstellen
5. Rechts davon auf das Disksymbol klicken, um die Methode als Standard zu definieren
Author of Total Commander
http://www.ghisler.com

User avatar
mausebär
Member
Member
Posts: 161
Joined: 2008-03-25, 13:30 UTC
Location: Near Munich / Bavaria / Germany

Re: Kopieren Button mit autom. Versionshochzählung

Post by *mausebär »

OK, verstanden. Aber jetzt ist die Kopierfunktion für alle Kopieraktionen fixiert, das war nicht die Absicht.
Für alle anderen zu kopierenden Objekte sollte das Standardfenster gezeigt wrden.
Außerdem muß ich händisch zu Quelle und Ziel navigieren...
Ich wollte:

Einen Button erstellen, der eine bestimmte Datei an einen bestimmten Ort kopiert.
Wie könnte ich das z.B. in einem Skript realisieren, das ich durch einen Button (an der Kopfleiste) auslösen kann?
Wie müßte dieses Skript aussehen? Habe Null erfahrung mit TC Skripts...

Ich hab schon mit DOS-Kommandos experimentiert, da scheint das aber sehr kompliziert zu sein, hab daher abgebrochen...

Trotzdem vielen dank für die Rückmeldung.

Wolfgang

User avatar
Stefan2
Power Member
Power Member
Posts: 2782
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Kopieren Button mit autom. Versionshochzählung

Post by *Stefan2 »

mausebär wrote:
2020-03-25, 12:27 UTC

Einen Button erstellen, der eine bestimmte Datei an einen bestimmten Ort kopiert.
Wie könnte ich das z.B. in einem Skript realisieren, das ich durch einen Button (an der Kopfleiste) auslösen kann?
Wie müßte dieses Skript aussehen? Habe Null erfahrung mit TC Skripts...

Hi Wolfgang,

ich bastel dir 'was....





 

User avatar
Stefan2
Power Member
Power Member
Posts: 2782
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Kopieren Button mit autom. Versionshochzählung

Post by *Stefan2 »

Stefan2 wrote:
2020-03-25, 12:51 UTC
mausebär wrote:
2020-03-25, 12:27 UTC

Einen Button erstellen, der eine bestimmte Datei an einen bestimmten Ort kopiert.
Wie könnte ich das z.B. in einem Skript realisieren, das ich durch einen Button (an der Kopfleiste) auslösen kann?
Wie müßte dieses Skript aussehen? Habe Null erfahrung mit TC Skripts...
Hi Wolfgang,
ich bastel dir 'was....

Eine Textdatei erstellen: "CopyTHISOneToTHISTarget.vbs".
Den Code dort rein kopieren.
Die UserSettings anpassen.
Einen Button erstellen mit Pfad zu dieser VBS und mit "%T" als Parameter.
Dann den Button anklicken um die BestimmteDatei in den BestimmtenOrdner zu kopieren.

Wenn du weitere Hilfe oder ein anderes Skript benötigst, gib Bescheid.


Code: Select all

REM Stefan 2020-03-25 Wed 14:43:10
REM Found at: https://ghisler.ch/board/viewtopic.php?p=382197#p382197

REM ===================   Purpose ==
REM Ich will mir im TC einen Button erzeugen, mit dem ich eine BESTIMMTE Datei an einen (BESTIMMTEN) anderen Ort kopieren kann. 
REM Existiert dort bereits eine Datei mit gleichem Namen, soll die neu kopierte Datei ein Versionsmerkmal (2), (3), (4), usw. im Dateinamen erhalten.

REM ==========   Example TC Button =======
REM 	Command: "D:\rive\path\to\CopyTHISOneToTHISTarget.vbs"
REM 	Parameter: "%T"
REM 	Start in:
REM 	Icon: C:\Windows\System32\imageres.dll
REM 	Tooltip: Copy THIS One To THIS Target with increasing serial


REM ===================   USER SETTINGS ==
strUrsprungsDatei="V:\oller Pfad zur\Datei zum Kopie.ren"
strUrsprungsDatei="c:\Windows\Microsoft.NET\Framework\v1.0.3705\installutil.exe.config"

strZielOrdner="V:\oller Pfad zum gewünschten Zielordner\"
strZielOrdner="c:\Temp\"



REM === UserSetting for "strZielName = strBaseName & strVorSERIAL & iSerial & strNachSERIAL & "." & strExtension"
strVorSERIAL  = "_("
iSerialSTARTNummer=2
strNachSERIAL = ")"






REM ===================   THE CODE =======
REM ======================================
Set FSO = CreateObject("Scripting.FileSystemObject")
SET WSO = CreateObject("WScript.Shell")

IF Wscript.Arguments.count > 0 Then 
	Para1=Wscript.Arguments.Item(0)
Else
	MsgBox "Error: param missing", VBOKOnly+VBExclamation , "TotalCommander Skript"
	Wscript.Quit
End If

strBaseName = FSO.GetBaseName(strUrsprungsDatei)
strExtension= FSO.GetExtensionName(strUrsprungsDatei)
strZielName = strBaseName&"."&strExtension

If FSO.FileExists(strUrsprungsDatei) Then
	If FSO.FolderExists(strZielOrdner) Then
			iSerial=iSerialSTARTNummer
			Do While( FSO.FileExists(strZielOrdner & "\" & strZielName) )
				REM USER SETTING: order of parts of new name "strZielName"
				strZielName = strBaseName & strVorSERIAL & iSerial & strNachSERIAL & "." & strExtension
				iSerial=iSerial+1
			Loop
		FSO.CopyFile strUrsprungsDatei,strZielOrdner&"\"&strZielName,False 'True/False=überschreiben
	End If
End If
REM ======================================


Im Code oben war noch der Bedarf an einem Parameter %T (Target panel) enthalten.
Da es hier jedoch um fest vorgegebene Pfade dreht, war dies unnötig und wurde im Code unten entfernt.
Im Zweifelsfall nimm den Code von unten.

Code: Select all

REM CopyTHISOneToTHISTarget.vbs
REM Stefan 2020-03-25 Wed 14:43:10 ; v2: 2020-03-27 21:24
REM Found at: https://ghisler.ch/board/viewtopic.php?p=382197#p382197

REM ===================   Purpose ==
REM Ich will mir im TC einen Button erzeugen, mit dem ich eine BESTIMMTE Datei an einen (BESTIMMTEN) anderen Ort kopieren kann. 
REM Existiert dort bereits eine Datei mit gleichem Namen, soll die neu kopierte Datei ein Versionsmerkmal (2), (3), (4), usw. im Dateinamen erhalten.

REM ==========   Example TC Button =======
REM 	Command: "D:\rive\path\to\CopyTHISOneToTHISTarget.vbs"
REM 	Parameter: 
REM 	Start in:
REM 	Icon: C:\Windows\System32\imageres.dll
REM 	Tooltip: Copy THIS One To THIS Target with increasing serial


REM ===================   USER SETTINGS , bitte anpassen ==

REM Datei, welche kopiert werden soll:
REM strUrsprungsDatei="V:\oller Pfad zur\Datei zum Kopie.ren"
strUrsprungsDatei="c:\Windows\Microsoft.NET\Framework\v1.0.3705\installutil.exe.config"

REM Der Zielordner, in dem die strUrsprungsDatei kopiert werden soll:
REM strZielOrdner="V:\oller Pfad zum gewünschten Zielordner\"
strZielOrdner="c:\Temp\"

REM Nummerierung der kopierten Datei ab dem zweiten Vorkommen im Zielordner:
REM === BEISPIEL PartOrder: strBaseName & strVorSERIAL & iSerial & strNachSERIAL & "." & strExtension"
strVorSERIAL  = "_("
REM Entscheide ob die zweite Datei mit (1) oder wie hier mit (2) markiert wird:
iSerialSTARTNummer=2
strNachSERIAL = ")"


REM Erwartetes Ergebnis (kann man unten bei "PartOrder" seinem Bedarf anpassen):
REM   c:\temp\installutil.exe.config
REM   c:\temp\installutil.exe_(2).config
REM   c:\temp\installutil.exe_(3).config
REM   c:\temp\installutil.exe_(4).config



REM ===================   THE CODE =======
REM ======================================
Set FSO = CreateObject("Scripting.FileSystemObject")
SET WSO = CreateObject("WScript.Shell")

REM IF Wscript.Arguments.count > 0 Then 
REM 	Para1=Wscript.Arguments.Item(0)
REM Else
REM 	MsgBox "Error: param missing", VBOKOnly+VBExclamation , "TotalCommander Skript"
REM 	Wscript.Quit
REM End If

strBaseName = FSO.GetBaseName(strUrsprungsDatei)
strExtension= FSO.GetExtensionName(strUrsprungsDatei)
strZielName = strBaseName&"."&strExtension

If FSO.FileExists(strUrsprungsDatei) Then
	If FSO.FolderExists(strZielOrdner) Then
			iSerial=iSerialSTARTNummer
			Do While( FSO.FileExists(strZielOrdner & "\" & strZielName) )
				REM PartOrder: order of parts of new name "strZielName"
				strZielName = strBaseName & strVorSERIAL & iSerial & strNachSERIAL & "." & strExtension
				iSerial=iSerial+1
			Loop
		FSO.CopyFile strUrsprungsDatei,strZielOrdner&"\"&strZielName,False 'True/False=überschreiben
	End If
End If
REM ======================================


 

User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 39415
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Re: Kopieren Button mit autom. Versionshochzählung

Post by *ghisler(Author) »

Wenn man den Dialog nicht anpinnt, dann wird die Überschreibeinbstellung nur benutzt, wenn man auf "Optionen >>" klickt.
Author of Total Commander
http://www.ghisler.com

User avatar
mausebär
Member
Member
Posts: 161
Joined: 2008-03-25, 13:30 UTC
Location: Near Munich / Bavaria / Germany

Re: Kopieren Button mit autom. Versionshochzählung

Post by *mausebär »

Vielen dank für eure Mühe,
ich werde das morgen ausprobieren und mich dann wieder melden.

User avatar
mausebär
Member
Member
Posts: 161
Joined: 2008-03-25, 13:30 UTC
Location: Near Munich / Bavaria / Germany

Re: Kopieren Button mit autom. Versionshochzählung

Post by *mausebär »

hab das jetzt probiert, funzt leider nicht...
Hier der Button und was ich da eingetragen habe:
Image: https://www.bilder-upload.eu/bild-904e8b-1585257282.jpg.html
Muß außer dem Quellpfad und dm Zielordner in dem Skript noch etwas anderes parametriert werden?

User avatar
Stefan2
Power Member
Power Member
Posts: 2782
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Kopieren Button mit autom. Versionshochzählung

Post by *Stefan2 »

mausebär wrote:
2020-03-26, 21:17 UTC
hab das jetzt probiert, funzt leider nicht...
Hier der Button und was ich da eingetragen habe:
Image: https://www.bilder-upload.eu/bild-904e8b-1585257282.jpg.html
Muß außer dem Quellpfad und dm Zielordner in dem Skript noch etwas anderes parametriert werden?

Was genau funzt den nicht?
Kommen Fehlermeldungen?
Füge mal an ein paar Stellen eine MessageBox ein und teste dann wie weit das Skript bei dir läuft.
MsgBox "msg 1"
MsgBox "msg 2"
MsgBox "msg 3"



Ich habe den obigen Code auch mal auf diesem PC runtergeladen und ausgeführt und er funktioniert hier:
c:\temp\installutil.exe.config
c:\temp\installutil.exe_(2).config
c:\temp\installutil.exe_(3).config
c:\temp\installutil.exe_(4).config

Funzt bei mir auf w7 und w10 1909



>>Hier der Button und was ich da eingetragen habe:
Sieht gut aus.
Obwohl der %T-Parameter gar nicht mehr (für deinen Bedarf) benötigt wird.
War ein Überbleisel aus einem CopyOneToMany Skript, das habe ich jetzt beim Skript in meinem Post oben korigiert ( in v2 )

>>Muß außer dem Quellpfad und dm Zielordner in dem Skript noch etwas anderes parametriert werden?
Nein.
Nur "strUrsprungsDatei" und "strZielOrdner".
Bei Bedarf noch die "Nummerierung"-Parameter und auf Wunsch die Reihenfolge beim "strZielName"


REM =================== USER SETTINGS , bitte anpassen ==

Code: Select all

REM Datei, welche kopiert werden soll:
REM strUrsprungsDatei="V:\oller Pfad zur\Datei zum Kopie.ren"
strUrsprungsDatei="c:\Windows\Microsoft.NET\Framework\v1.0.3705\installutil.exe.config"

Code: Select all

REM Der Zielordner, in dem die strUrsprungsDatei kopiert werden soll:
REM strZielOrdner="V:\oller Pfad zum gewünschten Zielordner\"
strZielOrdner="c:\Temp\"

Code: Select all

REM Nummerierung der kopierten Datei ab dem zweiten Vorkommen im Zielordner:
REM === BEISPIEL PartOrder: strBaseName & strVorSERIAL & iSerial & strNachSERIAL & "." & strExtension"
strVorSERIAL  = "_("
REM Entscheide ob die zweite Datei mit (1) oder wie hier mit (2) markiert wird:
iSerialSTARTNummer=2
strNachSERIAL = ")"

Code: Select all

			Do While( FSO.FileExists(strZielOrdner & "\" & strZielName) )
				REM PartOrder: order of parts of new name "strZielName"
				strZielName = strBaseName & strVorSERIAL & iSerial & strNachSERIAL & "." & strExtension
				iSerial=iSerial+1
			Loop




Wenn du willst, poste doch mal den Code welchen du bei dir ausführst.




 

Post Reply