Dateien automatisiert via Button kopieren/umbenennen
Moderators: Hacker, Stefan2, white
-
- Junior Member
- Posts: 32
- Joined: 2011-12-18, 17:29 UTC
Dateien automatisiert via Button kopieren/umbenennen
Hallo zusammen,
bin neu hier und bitte daher um Vergebung, falls die Frage ein "alter Hut" sein sollte, die Suche habe ich nämlich mehrfach bemüht, überraschenderweise (für mich) ohne relevante Treffer.
Ich muss vorausschicken, dass ich mit TC noch nicht allzuviel Erfahrung habe, Freunde sind jedoch seit Jahren begeisterte Anwender und mittlerweile beginne ich zu begreifen, warum. Das ist ja wirklich ein Monster-tool, von den Möglichkeiten her.
Nun zu meiner Frage: ich verwende Opera als inet-browser - und seit v9.50 hat auch Opera sich einer Art von unsichtbarem Diktat unterworfen (keiner scheint so recht zu wissen, woher das kommt), ge-cachte Bild- und Videodateien nicht mehr im Klartext im cache-Verzeichnis anzuzeigen, sondern nur noch als unkenntliche .tmp-Temporärdateien abzulegen.
Dennoch ist es z.B. mit TC ein Kinderspiel, durch Zeitsortierung und Dateigrösse die gesuchten Bild- und Videodateien im cache-Ordner aufzuspüren.
Markieren mit re. Maustaste und <F5>/copy-Dialog aufrufen, dabei in .jpg oder .flv umbenennen und ab geht die Post, Kopie ins Zielverzeichnis.
Nun habe ich mich mit dem Erstellen eigener Buttons auseinandergesetzt, da ist so vieles möglich, da sollte es doch ein Kinderspiel sein, dieses lästige Kopieren/Umbenennen der jeweils markierten Dateien auf einen Button zu legen (bzw. 2, 1 jeweils für jpg und flv).
Doch - bisher Fehlanzeige!
Nehme ich als Befehl für den Button "cm_copy", akzeptiert die Parameter-Zeile keine weitere Eingabe ("greyed-out"), sodass ich
"%P%S_%T*.jpg"
nirgends angeben kann.
Verwende ich als Befehl hingegen "xcopy", dann kann ich zwar mit
"%P%N_%T*.jpg"
eine einzige Datei so bearbeiten, "xcopy" akzeptiert jedoch als hauptsächliches Directory-tool anscheinend nicht mehrere Datreinamen, sodass die Übergabe der markierten Dateien mit "%S" zu einer Fehlermeldung führt, auch mit "xxcopy" und "robocopy" bin ich an dieser Stelle gescheitert.
Und bei Verwendung des internen "copy" als Befehl bekomme ich immer nur "file not found", obwohl über die Kommandozeile das Kopieren einer Datei mit OS-eigenem "copy" aus dem gleichen Verzeichnis funktioniert.
Habe ich also einen dummen Anfängerfehler gemacht - oder sollte das wirklich so schwierig sein?
mfg
TomTom
bin neu hier und bitte daher um Vergebung, falls die Frage ein "alter Hut" sein sollte, die Suche habe ich nämlich mehrfach bemüht, überraschenderweise (für mich) ohne relevante Treffer.
Ich muss vorausschicken, dass ich mit TC noch nicht allzuviel Erfahrung habe, Freunde sind jedoch seit Jahren begeisterte Anwender und mittlerweile beginne ich zu begreifen, warum. Das ist ja wirklich ein Monster-tool, von den Möglichkeiten her.
Nun zu meiner Frage: ich verwende Opera als inet-browser - und seit v9.50 hat auch Opera sich einer Art von unsichtbarem Diktat unterworfen (keiner scheint so recht zu wissen, woher das kommt), ge-cachte Bild- und Videodateien nicht mehr im Klartext im cache-Verzeichnis anzuzeigen, sondern nur noch als unkenntliche .tmp-Temporärdateien abzulegen.
Dennoch ist es z.B. mit TC ein Kinderspiel, durch Zeitsortierung und Dateigrösse die gesuchten Bild- und Videodateien im cache-Ordner aufzuspüren.
Markieren mit re. Maustaste und <F5>/copy-Dialog aufrufen, dabei in .jpg oder .flv umbenennen und ab geht die Post, Kopie ins Zielverzeichnis.
Nun habe ich mich mit dem Erstellen eigener Buttons auseinandergesetzt, da ist so vieles möglich, da sollte es doch ein Kinderspiel sein, dieses lästige Kopieren/Umbenennen der jeweils markierten Dateien auf einen Button zu legen (bzw. 2, 1 jeweils für jpg und flv).
Doch - bisher Fehlanzeige!
Nehme ich als Befehl für den Button "cm_copy", akzeptiert die Parameter-Zeile keine weitere Eingabe ("greyed-out"), sodass ich
"%P%S_%T*.jpg"
nirgends angeben kann.
Verwende ich als Befehl hingegen "xcopy", dann kann ich zwar mit
"%P%N_%T*.jpg"
eine einzige Datei so bearbeiten, "xcopy" akzeptiert jedoch als hauptsächliches Directory-tool anscheinend nicht mehrere Datreinamen, sodass die Übergabe der markierten Dateien mit "%S" zu einer Fehlermeldung führt, auch mit "xxcopy" und "robocopy" bin ich an dieser Stelle gescheitert.
Und bei Verwendung des internen "copy" als Befehl bekomme ich immer nur "file not found", obwohl über die Kommandozeile das Kopieren einer Datei mit OS-eigenem "copy" aus dem gleichen Verzeichnis funktioniert.
Habe ich also einen dummen Anfängerfehler gemacht - oder sollte das wirklich so schwierig sein?
mfg
TomTom
die gute alte DOS-Kommandozeile hilft hier villeicht:
Erstelle eine Textdatei mit Namen: meinbefehl.CMD mit folgendem Inhalt:
Wenn Du eine Datei mit beliebiger Endung in *.jpg kopieren willst.
Dann schreibst Du bei Deinem Button in die 1.Zeile Kommando:
meinbefehl.CMD
und in die 2. Zeile Parameter:
%P%N %O
Du musst natürlich überall noch die Pfade so setzen, bzw. angeben, dass die Befehlsdatei (meinbefehl.CMD ) gefunden und das richtige Zielverzeichniss genommen wird. Der Befehl bearbeitet die 1. Datei, die unter dem aktuellen Cursor im TC steht.
Gruß MrGolgi
Erstelle eine Textdatei mit Namen: meinbefehl.CMD mit folgendem Inhalt:
Code: Select all
copy %1 %2.jpg
Dann schreibst Du bei Deinem Button in die 1.Zeile Kommando:
meinbefehl.CMD
und in die 2. Zeile Parameter:
%P%N %O
Du musst natürlich überall noch die Pfade so setzen, bzw. angeben, dass die Befehlsdatei (meinbefehl.CMD ) gefunden und das richtige Zielverzeichniss genommen wird. Der Befehl bearbeitet die 1. Datei, die unter dem aktuellen Cursor im TC steht.
Gruß MrGolgi
Ein Pessimist ist ein Optimist mit Erfahrung
Allerdings hat der Fragesteller oben bereits dargelegt, dass er die Datei unter dem Cursor auch mit "xcopy" als Button-befehl, also quasi auch schon DOS-zeilenartig, hinbekommt, es geht ihm offenbar aber nicht darum, eine Datei beliebiger Endung in "*.jpg" umzukopieren, sondern die ganze, von ihm nach Grösse und Zeitpunkt als vermutliche jpg-Dateien erkannte, manuell getroffene Auswahl in TC - also womöglich eine ganze Reihe unzusammenhängend markierter Dateien.MrGolgi wrote:Wenn Du eine Datei mit beliebiger Endung in *.jpg kopieren willst. ... %P%N %O
Die Schwierigkeit dürfte darin liegen, ein Kommandozeilen-copy-tool zu finden, dem man die gesamte TC-Auswahl (Markierung) per Parameter "%S" - und nicht bloss "%N" übergeben kann.
Da ich öfters vor einer vergleichbaren Situation stehe, habe ich mal kurz herumprobiert, bin aber - aus Zeitmangel? - auch noch auf keine Lösung gestossen. Aber ich würde ebenfalls glauben, das Problem sollte sich doch relativ einfach knacken lassen. Mal sehen, vielleicht hat ja noch wer eine ganz simple Lösung parat.
greetings
algol
Hallo.
Mit einer Batchdatei lässt sich das Problem wunderbar lösen.
Hier mal mein Lösungsansatz dafür:
(speichern als z.B. CopyJPG.cmd)
Anmerkung: es macht die Sache etwas einfacher, wenn man den Zielpfad als ersten Parameter an die Batchdatei übergibt.
Harald
Mit einer Batchdatei lässt sich das Problem wunderbar lösen.
Hier mal mein Lösungsansatz dafür:
(speichern als z.B. CopyJPG.cmd)
Im TC einen Button erstellt mit CopyJPG.cmd in der Kommandozeile, als Parameter %T %P%S angeben.@echo off
if .%1==. goto Exit
set TargetDir=%1
shift
:Go
if .%1==. goto Exit
xcopy %1 %TargetDir%*.jpg
shift
goto Go
:Exit
Anmerkung: es macht die Sache etwas einfacher, wenn man den Zielpfad als ersten Parameter an die Batchdatei übergibt.
Harald
Interessant ist dann vielleicht der Parameter %L des TC. Der Kopiert die aktuelle Auswahl in eine temp-Datei.
Damit geht dann folgende Lösung:
Button Kommando batch.cmd
Button Parameter %L
Befehlsdatei "batch.cmd":
und bitte mich nicht die ganzen Parameter zu erklären. Ich verstehe die auch nicht 
Gruß MrGolgi
Damit geht dann folgende Lösung:
Button Kommando batch.cmd
Button Parameter %L
Befehlsdatei "batch.cmd":
Code: Select all
FOR /F " usebackq tokens=1 " %%i IN (`type %1`) DO copy %%i %%~n%i.jpg

Gruß MrGolgi
Ein Pessimist ist ein Optimist mit Erfahrung
-
- Junior Member
- Posts: 32
- Joined: 2011-12-18, 17:29 UTC
@algol: danke für die exakte Analyse meiner Frage / des Problems und die zusätzliche Präzisierung meines Anliegens.
@Camarillo:
Hab' mir schon gedacht, dass es vielleicht auch mit einer Beschwörungsformel ginge. Aber diese da ...?
Na, egal. Es "funzt" jedenfalls! Tausend Dank für diesen "Zauberspruch".
Tja, wenn der Prophet nicht zum Berg kommt...! Die Ein-Dateien-Lösung in eine Schleife zu verpacken hat natürlich etwas, auch wenn ich nicht ganz überblicke, wodurch die %S-Liste schrittweise an die einzelnen Durchläufe übergeben wird.
Noch eine dumme Frage zum Abschluss:
Warum kann eigentlich der interne Befehl "cm_copy" nicht einfach seine "eigenen", d.h. internen Parameter übernehmen und abarbeiten?
mfg
TomTom
@Camarillo:
Äh ... Muffin ... "purper-girk" ?!?Camarillo wrote:Mit einer Batchdatei lässt sich das Problem wunderbar lösen.
...
:Go
if .%1==. goto Exit
xcopy %1 %TargetDir%*.jpg
shift
goto Go....
Hab' mir schon gedacht, dass es vielleicht auch mit einer Beschwörungsformel ginge. Aber diese da ...?
Na, egal. Es "funzt" jedenfalls! Tausend Dank für diesen "Zauberspruch".
Tja, wenn der Prophet nicht zum Berg kommt...! Die Ein-Dateien-Lösung in eine Schleife zu verpacken hat natürlich etwas, auch wenn ich nicht ganz überblicke, wodurch die %S-Liste schrittweise an die einzelnen Durchläufe übergeben wird.
Noch eine dumme Frage zum Abschluss:
Warum kann eigentlich der interne Befehl "cm_copy" nicht einfach seine "eigenen", d.h. internen Parameter übernehmen und abarbeiten?
mfg
TomTom
Das wird durch den "shift" Befehl erreicht, der bewirkt, daß %2 zu %1 wird, %3 zu %2 usw.TomTomturnaround wrote:auch wenn ich nicht ganz überblicke, wodurch die %S-Liste schrittweise an die einzelnen Durchläufe übergeben wird.
Übrigens hab ich bemerkt, daß es ein Problem gibt, wenn das Zielverzeichnis Leerzeichen enthält. Das läßt sich aber einfach umgehen, indem man statt
%T %P%S
in der Kommandozeile für die Batchdatei
%t %P%S
schreibt.
MfG
Harald
Machs dir nicht so schwer. Benutz einfach OperaCacheView (http://www.nirsoft.net/utils/opera_cache_view.html).
Dort stehen die Cachefiles mit Klarnamen und können mit F4 einfach woanders hin kopiert werden.
Früher ging es mit dem Plugin Opera_Cache (http://www.totalcmd.net/plugring/opera_cache.html) noch leichter. Ist aber leider nur für 10.10 und kleiner.
Dort stehen die Cachefiles mit Klarnamen und können mit F4 einfach woanders hin kopiert werden.
Früher ging es mit dem Plugin Opera_Cache (http://www.totalcmd.net/plugring/opera_cache.html) noch leichter. Ist aber leider nur für 10.10 und kleiner.
-
- Junior Member
- Posts: 32
- Joined: 2011-12-18, 17:29 UTC
Und welche "Erleichterung" brächte jetzt die Meldung:Stiltzkin wrote:Machs dir nicht so schwer. Benutz einfach OperaCacheView (http://www.nirsoft.net/utils/opera_cache_view.html).
"Cannot open the cache index file!"
mfg
TomTom
Hallo, TomTomturnaround.
Du hast doch einen funktionierenden Workaround für deine Aufgabe von Camarillo bekommen. Damit ist das Problem doch erst einmal gelöst.
Opera hat im Lauf der Zeit mehrfach die interne Struktur seines Browser Caches verändert. Darum helfen die alten Total Commander Plugins nicht mehr, wenn du einen Opera neuer als 10.10 benutzt. Und OperaCacheView hilft nicht mehr, wenn dein Opera neuer ist als 10.50.
Also im Moment scheint es keine elegantere Lösung für deine Aufgabe zu geben, als Camarillos Script.
Schöne Weihnachtstage noch,
Karl
Du hast doch einen funktionierenden Workaround für deine Aufgabe von Camarillo bekommen. Damit ist das Problem doch erst einmal gelöst.
Opera hat im Lauf der Zeit mehrfach die interne Struktur seines Browser Caches verändert. Darum helfen die alten Total Commander Plugins nicht mehr, wenn du einen Opera neuer als 10.10 benutzt. Und OperaCacheView hilft nicht mehr, wenn dein Opera neuer ist als 10.50.
Also im Moment scheint es keine elegantere Lösung für deine Aufgabe zu geben, als Camarillos Script.
Schöne Weihnachtstage noch,
Karl
MX Linux 21.3 64-bit xfce, Total Commander 11.50 64-bit
The people of Alderaan keep on bravely fighting back the clone warriors sent out by the unscrupulous Sith Lord Palpatine.
The Prophet's Song
The people of Alderaan keep on bravely fighting back the clone warriors sent out by the unscrupulous Sith Lord Palpatine.
The Prophet's Song
-
- Junior Member
- Posts: 32
- Joined: 2011-12-18, 17:29 UTC
Wofür ich mich auch ausdrücklich und wärmstens bedankt habe. Ich habe lediglich auf den (obsoleten) Hinweis reagiert, es mir doch nicht unnötig "schwer zu machen".karlchen wrote:Du hast doch einen funktionierenden Workaround für deine Aufgabe von Camarillo bekommen.
Für mich bleibt, wie gesagt, nur noch die Frage offen, warum eigentlich TC "seine eigene" Parameterübergabe (%P%S) ausgerechnet für das interne cm_copy-command nicht verarbeiten kann?
(Neben der eigentlich ins "Opera"-Forum gehörenden, dort jedoch zensurierten Frage, warum Opera als sog. unabhängiger Browser gemeinsame, üble Sache mit den Gangstern der DRM-Mafia macht und den Zugang zu diesen Daten mit wachsender List und Heimtücke abzuschneiden trachtet und diesen Umstand dann noch mit mehr als fadenscheinigen Pseudo-Sicherheitsargumenten zu bemänteln versucht?)
mfg
TomTom
Hallo, TomTom.
Warum Total Commander interne Kommandos wie cm_copy keine Parameter akzeptieren?
Aus Christian Ghislers Sicht ist Total Commander zuallererst ein interaktiv zu bedienender Dateimanager. Von daher ruft z.B. ein Kommando wie cm_copy einfach den Kopierendialog auf.
Ein Kommando cm_copy, das ähnlich wie die Programmdatei xcopy.exe Aufrufarguments akzeptieren würde wie Quelle und Ziel, hingegen ginge eher in Richtung Script-Fähigkeit des Total Commanders. Und Wünsche, den Total Commander in dieser Richtung zu erweitern, sind bisher eher nicht in die Entwicklung eingeflossen.
Zurück zum cm_copy:
Da cm_copy als Befehl in der Buttonbar von der Wirkung her absolut identisch ist mit dem Drücken der <F5> Taste, also dem Aufruf des Kopieren-Dialogs, verhält er sich auch ganz genauso und man selbst benutzt ihn auch genauso:
Erst den Zielordner festlegen, dann die Quelldateien markieren, dann den Button mit dem Befehl cm_copy anklicken.
Der Kopierdialog erkennt und interpretiert, welches Objekte selektiert / markiert sind, und will diese in den Zielordner kopieren.
Grüße
Karl
Warum Total Commander interne Kommandos wie cm_copy keine Parameter akzeptieren?
Aus Christian Ghislers Sicht ist Total Commander zuallererst ein interaktiv zu bedienender Dateimanager. Von daher ruft z.B. ein Kommando wie cm_copy einfach den Kopierendialog auf.
Ein Kommando cm_copy, das ähnlich wie die Programmdatei xcopy.exe Aufrufarguments akzeptieren würde wie Quelle und Ziel, hingegen ginge eher in Richtung Script-Fähigkeit des Total Commanders. Und Wünsche, den Total Commander in dieser Richtung zu erweitern, sind bisher eher nicht in die Entwicklung eingeflossen.
Zurück zum cm_copy:
Da cm_copy als Befehl in der Buttonbar von der Wirkung her absolut identisch ist mit dem Drücken der <F5> Taste, also dem Aufruf des Kopieren-Dialogs, verhält er sich auch ganz genauso und man selbst benutzt ihn auch genauso:
Erst den Zielordner festlegen, dann die Quelldateien markieren, dann den Button mit dem Befehl cm_copy anklicken.
Der Kopierdialog erkennt und interpretiert, welches Objekte selektiert / markiert sind, und will diese in den Zielordner kopieren.
Grüße
Karl
MX Linux 21.3 64-bit xfce, Total Commander 11.50 64-bit
The people of Alderaan keep on bravely fighting back the clone warriors sent out by the unscrupulous Sith Lord Palpatine.
The Prophet's Song
The people of Alderaan keep on bravely fighting back the clone warriors sent out by the unscrupulous Sith Lord Palpatine.
The Prophet's Song
-
- Junior Member
- Posts: 32
- Joined: 2011-12-18, 17:29 UTC
Danke für die prompte Antwort. Ich stimme Dir auch zu, dass die Zielorientierung von TC nicht in einer diffusen scripting-Fähigkeit liegen kann und sollte.karlchen wrote:...ginge eher in Richtung Script-Fähigkeit des Total Commanders. Und Wünsche, den Total Commander in dieser Richtung zu erweitern, sind bisher eher nicht in die Entwicklung eingeflossen.
Aber vielleicht sollte man hier doch zwischen genereller, echter scripting-Fähigkeit und blosser "Buttonisier"-Fähigkeit unterscheiden.
Gut, bei <F5> wird man sofort argumentieren können, dass eine Kopie nun mal eine Kopie ist und daher "*.*" die naheliegende Vorgabe für die Zieldateien. Aber schon beim gleich-gestalteten <F6>(Rename/move)-Dialog wäre es auch in der interaktiven Maske nicht verkehrt, wenn es neben der logischen Vorgabe "*.*" noch eine drop-down-box mit weiteren bzw. zuletzt benutzten Auswahlmöglichkeiten gäbe, so, wie das jetzt schon für die darunterliegende "Filter"-Maske der Fall ist. Und genau diese Angaben bzw. Einschränkungen sollten dann auch über die bereits vohandenen Parameter und einen entsprechenden Button automatisierbar sein, eher eine Art von Makro als echtes scripting.
Denn das, so würde ich sagen, ist doch der Sinn eines Buttons. Oder was sonst sollte der Sinn eines "cm-copy"- oder insbesondere "cm_RenMov"- Dialogaufrufs via Button sein, wenn ich mit absolut identem Ergebnis auch auf die <F5> oder <F6>-Schaltfläche klicken kann?
Ein blosser "zweiter, identer F6-Button" via Button-bar erschiene mir geradezu absurd, würde er nicht gleichzeitig erweiterte, makroartige renaming-Möglichkeiten bieten.
mfg
TomTom