Kopieren mit anhängen des Zeitstempels
Moderators: Hacker, Stefan2, white
Kopieren mit anhängen des Zeitstempels
Hallo zusammen
ich nutze nun seit Jahren den TC, habe mich aber bisher noch nicht an automatisierbare Aufgaben herangewagt, wie beispielweise die Folgende:
Ich möchte gerne zwecks Backup beim Drücken einer Tastenkombination (Shift + F5) die Datei von dem linken Fenster ins rechte kopieren und danach an den Dateinamen das Datum und die Uhrzeit der kopierten Datei anfügen.
Ich vermute, dass ich die Aufgabe mit einer Batch-Datei erledigen muss. Die Batchdatei rufe ich dann mittels Tastenkombination auf. Wie dieser Schritt geht, weiss ich, jedoch stellt mir zurzeit folgendes Nichtwissen vor unüberwindbare Schwierigkeiten:
1. Wie übergebe ich der Batchdatei den Dateiname (inkl. Pfad) der im linken Fenster von TC ausgewählten Datei?
2. Wie übergebe ich der Batchdatei das Verzeichnis im rechten fenster von TC?
Falls ich über das Ziel hinausschiesse, würde ich mich über einen alternativen Vorschlag sehr freuen, wie die Aufgabe zu bewerkstelligen wäre.
ich nutze nun seit Jahren den TC, habe mich aber bisher noch nicht an automatisierbare Aufgaben herangewagt, wie beispielweise die Folgende:
Ich möchte gerne zwecks Backup beim Drücken einer Tastenkombination (Shift + F5) die Datei von dem linken Fenster ins rechte kopieren und danach an den Dateinamen das Datum und die Uhrzeit der kopierten Datei anfügen.
Ich vermute, dass ich die Aufgabe mit einer Batch-Datei erledigen muss. Die Batchdatei rufe ich dann mittels Tastenkombination auf. Wie dieser Schritt geht, weiss ich, jedoch stellt mir zurzeit folgendes Nichtwissen vor unüberwindbare Schwierigkeiten:
1. Wie übergebe ich der Batchdatei den Dateiname (inkl. Pfad) der im linken Fenster von TC ausgewählten Datei?
2. Wie übergebe ich der Batchdatei das Verzeichnis im rechten fenster von TC?
Falls ich über das Ziel hinausschiesse, würde ich mich über einen alternativen Vorschlag sehr freuen, wie die Aufgabe zu bewerkstelligen wäre.
Re: Kopieren mit anhängen des Zeitstempels
Hi
- Andern...
- F1-Taste drücken (und den Button-Dialog schließen)
- Lese:
1. %P%N (oder "%S")
2. "%T"
Als kleinen Test Copy&Paste diesen Code auf die TC-Buttonleiste:
Dann eine Datei markieren (einmal mit und einmal ohne Leerzeichen) und den Button anklicken.
Für "jede ausgewählte Datei" verwende "%L" (oder andere) und zB eine Batch mit Befehlen wie dieser Pseudo-Code "for %A in ("%L") DO xxx mit %A"
Tipp: durchsuche mal das Forum, zu diesem Thema gibt es 378 weitere Beispiele. (grob geschätzt, können auch 2 bis 3 mehr sein)
- - -
Den Teil mit "das Datum und die Uhrzeit der kopierten Datei anfügen" bekommst du hin?
Welches "Datum und Uhrzeit" meinst du eigentlich? Erstellt, Geändert, Aktuell?
- Rechtsklick auf einen Buttonpddzaic wrote:...
1. Wie übergebe ich der Batchdatei den Dateiname (inkl. Pfad) der im linken Fenster von TC ausgewählten Datei?
2. Wie übergebe ich der Batchdatei das Verzeichnis im rechten fenster von TC?
...
- Andern...
- F1-Taste drücken (und den Button-Dialog schließen)
- Lese:
1. %P%N (oder "%S")
2. "%T"
Als kleinen Test Copy&Paste diesen Code auf die TC-Buttonleiste:
Code: Select all
TOTALCMD#BAR#DATA
cmd /k
ECHO %P%N & ECHO "%T"
C:\Windows\system32\cmd.exe
TEST ECHO %P%N ---- "%T"
-1
Für "jede ausgewählte Datei" verwende "%L" (oder andere) und zB eine Batch mit Befehlen wie dieser Pseudo-Code "for %A in ("%L") DO xxx mit %A"
Tipp: durchsuche mal das Forum, zu diesem Thema gibt es 378 weitere Beispiele. (grob geschätzt, können auch 2 bis 3 mehr sein)
- - -
Den Teil mit "das Datum und die Uhrzeit der kopierten Datei anfügen" bekommst du hin?
Welches "Datum und Uhrzeit" meinst du eigentlich? Erstellt, Geändert, Aktuell?
Hallo stefan2
Herzlichen Dank für dein Posting. War leider in der Zwischenzeit im Urlaub, sodass ich mich erst jetzt dieser Aufgabe widmen kann.
Den Button konnte ich nach einem blöden Interpretationsfehler deiner Anweisung erfolgreich in die TC-Menüleiste integrieren. Deine Code beantwortet auch meine Fragen. Jetz muss ich mich wohl an die Batschdatei machen.
Würde es auch mit TC-Bordmitteln (ohne Batch-Datei) gehen, zumindest bei einer Datei?
Das Kopieren habe ich nun mit
im Parameterfeld des Buttons hinbekommen. In der Hilfe habe ich unter Dialogbox: Konfigurieren - Buttonbar ändern die ganzen Parameter gefunden, jedoch entdecke ich nirgends etwas, womit in das Datum & Co. auslesen kann. Ich vermute, dass dieser Weg hier beendet ist.
Wenn ich es richtig verstehe muss ich die gesamten Kommandos in das Parameterfeld eintragen.
Herzlichen Dank für dein Posting. War leider in der Zwischenzeit im Urlaub, sodass ich mich erst jetzt dieser Aufgabe widmen kann.
Den Button konnte ich nach einem blöden Interpretationsfehler deiner Anweisung erfolgreich in die TC-Menüleiste integrieren. Deine Code beantwortet auch meine Fragen. Jetz muss ich mich wohl an die Batschdatei machen.
Würde es auch mit TC-Bordmitteln (ohne Batch-Datei) gehen, zumindest bei einer Datei?
Das Kopieren habe ich nun mit
Code: Select all
Copy %P%N "%T"
Wenn ich es richtig verstehe muss ich die gesamten Kommandos in das Parameterfeld eintragen.
PowerShell: Kopiere mit Timestamp
Mit TC-Bordmitteln, zumindest ohne Umwege, geht dass glaub' ich nicht.
---
>>Copy %P%N "%T"
Sehr gut!
>>> jedoch entdecke ich nirgends etwas, womit in das Datum & Co. auslesen kann. Ich vermute, dass dieser Weg hier beendet ist.
Das geht über Plugins, zB bei Attributeändern oder im MUT MultiumbenennTool.
Aber dann müsste man das Datum noch umsortieren und die Doppelpunkte raus nehmen. Das geht auch, über "Teilstrings", siehe Hilfe im MUT.
Aber da kann ich auch gleich ein externes Skript verwenden (IMHO).
>>Wenn ich es richtig verstehe muss ich die gesamten Kommandos in das Parameterfeld eintragen.
Das Kommando in die Kommandobox, die Parameter in die Parameterbox.
---
Hier ist ein PowerShell-Skript als Button zum Copy&Paste auf die TC-Buttonbar:
Dies funktioniert für alle ausgewählten Dateien (und Ordner, aber ohne den Inhalt mit zu kopieren), somit auch bei einer einzelnen Datei,
Erklärung:
TYPE '%L'|Foreach{$F=(GI $_);$N=($F.BaseName+"""_{0:yyyy-MM-dd_HHmm}""" -f $F.LastwriteTime + $F.Extension);COPY $F """%T$N"""}
Type ist ein PoSh-Alias von Get-Content.
%L und %T => TC-Parameter
$F=(Get-Item $_) => Zugriff auf ein reales Objekt anhand der Textzeile in TCs %L-Tempdatei.
$F.BaseName => nur den Namensteil ohne Erweiterung.
Hier ginge auch: $F.Name, dann inklusive Erweiterung.
$N=(...) => Neuer Name aus BaseName von $F und Zeichenkette aus Änderungsdatum von $F plus Erweiterung.
Anführungszeichen muss ich im Button verdreifachen.
Das Änderungsdatum wird mittels "{0:yyyy}-{0:MM}-{0:dd}_{0:HHmm}" neu sortiert um als Dateiname benutzt zu werden.
Hier ginge auch zB: "_(BACKUP STAND {0:yyyy.MM.dd.HHmm})"
Außerdem habe ich einen Unterstrich vorne dran gestellt.
HTH?
- Ansonsten bei Fragen fragen.
.
---
>>Copy %P%N "%T"
Sehr gut!
>>> jedoch entdecke ich nirgends etwas, womit in das Datum & Co. auslesen kann. Ich vermute, dass dieser Weg hier beendet ist.
Das geht über Plugins, zB bei Attributeändern oder im MUT MultiumbenennTool.
Aber dann müsste man das Datum noch umsortieren und die Doppelpunkte raus nehmen. Das geht auch, über "Teilstrings", siehe Hilfe im MUT.
Aber da kann ich auch gleich ein externes Skript verwenden (IMHO).
>>Wenn ich es richtig verstehe muss ich die gesamten Kommandos in das Parameterfeld eintragen.
Das Kommando in die Kommandobox, die Parameter in die Parameterbox.
---
Hier ist ein PowerShell-Skript als Button zum Copy&Paste auf die TC-Buttonbar:
Code: Select all
TOTALCMD#BAR#DATA
PowerShell
TYPE '%L'|Foreach{$F=(GI $_);$N=($F.BaseName+"""_{0:yyyy-MM-dd_HHmm}""" -f $F.LastwriteTime+$F.Extension);COPY $F """%T$N"""}
c:\windows\system32\windowspowershell\v1.0\powershell.exe
PowerShell TEST: Kopiere nach %T mit Timestamp
-1
Erklärung:
TYPE '%L'|Foreach{$F=(GI $_);$N=($F.BaseName+"""_{0:yyyy-MM-dd_HHmm}""" -f $F.LastwriteTime + $F.Extension);COPY $F """%T$N"""}
Type ist ein PoSh-Alias von Get-Content.
%L und %T => TC-Parameter
$F=(Get-Item $_) => Zugriff auf ein reales Objekt anhand der Textzeile in TCs %L-Tempdatei.
$F.BaseName => nur den Namensteil ohne Erweiterung.
Hier ginge auch: $F.Name, dann inklusive Erweiterung.
$N=(...) => Neuer Name aus BaseName von $F und Zeichenkette aus Änderungsdatum von $F plus Erweiterung.
Anführungszeichen muss ich im Button verdreifachen.
Das Änderungsdatum wird mittels "{0:yyyy}-{0:MM}-{0:dd}_{0:HHmm}" neu sortiert um als Dateiname benutzt zu werden.
Hier ginge auch zB: "_(BACKUP STAND {0:yyyy.MM.dd.HHmm})"
Außerdem habe ich einen Unterstrich vorne dran gestellt.
HTH?

.
Hi stefan2
Zwei Frage hätte ich da noch. Du schreibst in deinem Code
Wofür sorgt dieses 0:?
Kennst Du ein (gutes) Einsteigertutorial für die PowerShell? Ich werde eh Google bemühen, aber nin für jeden Ratschlag dankbar.
Zwei Frage hätte ich da noch. Du schreibst in deinem Code
Code: Select all
{0:yyyy-MM-dd_HHmm}
Kennst Du ein (gutes) Einsteigertutorial für die PowerShell? Ich werde eh Google bemühen, aber nin für jeden Ratschlag dankbar.
PowerShell: "-f Format Operator"
Hi pddzaic
Die '0' steht für "hier die erste INFO hinter dem '-f' als Basis verwenden".
"Abc {0} hijkl {1} pqrst {2}" -f INFO-1,INFO_2, INFO3
Vergleiche unser
"""_{0:yyyy-MM-dd_HHmm}""" -f $F.LastwriteTime
---
Die '0' kann auch mehrmals vorkommen, zB:
"""_{0:yyyy}-{0:MM}-{0:dd}_{0:HHmm}""" -f $obj.LastwriteTime
(Wie so oft in der Informatik, wird aus historischen Gründe bei '0' angefangen zu zählen)
Dieses Konstrukt nennt sich PowerShell "-f Format Operator"
Als kleinen Test probier mal in der PS-Konsole:
"Abc {0} hijkl {1} pqrst {2}" -f "defg", "mno", "uvwxyz"
-oder-
"One : {1} Two : {2} Three : {3}" -f "", "Eins;", "Zwei;", "Drei"
-oder-
"One : {1} Two : {2} Three : {0}" -f "Drei", "Eins;", "Zwei;"
Infos dazu zB bei
https://ss64.com/ps/syntax-f-operator.html
'Filename: {0} Created: {1}' -f $_.fullname,$_.creationtime
---
Einsteigertutorial für die PowerShell habe ich versucht dort zu sammeln (am Ende des Posts bei "Weiterführende Infos"):
http://ghisler.ch/board/viewtopic.php?p=323982#323982
Wenn ich dort noch 'was aufnehmen soll, ...nur her damit
Die '0' steht für "hier die erste INFO hinter dem '-f' als Basis verwenden".
"Abc {0} hijkl {1} pqrst {2}" -f INFO-1,INFO_2, INFO3
Vergleiche unser
"""_{0:yyyy-MM-dd_HHmm}""" -f $F.LastwriteTime
---
Die '0' kann auch mehrmals vorkommen, zB:
"""_{0:yyyy}-{0:MM}-{0:dd}_{0:HHmm}""" -f $obj.LastwriteTime
(Wie so oft in der Informatik, wird aus historischen Gründe bei '0' angefangen zu zählen)
Dieses Konstrukt nennt sich PowerShell "-f Format Operator"
Als kleinen Test probier mal in der PS-Konsole:
"Abc {0} hijkl {1} pqrst {2}" -f "defg", "mno", "uvwxyz"
-oder-
"One : {1} Two : {2} Three : {3}" -f "", "Eins;", "Zwei;", "Drei"
-oder-
"One : {1} Two : {2} Three : {0}" -f "Drei", "Eins;", "Zwei;"
Infos dazu zB bei
https://ss64.com/ps/syntax-f-operator.html
'Filename: {0} Created: {1}' -f $_.fullname,$_.creationtime
---
Einsteigertutorial für die PowerShell habe ich versucht dort zu sammeln (am Ende des Posts bei "Weiterführende Infos"):
http://ghisler.ch/board/viewtopic.php?p=323982#323982
Wenn ich dort noch 'was aufnehmen soll, ...nur her damit
