Aus QuellDateiname Zielordner generieren-> dann dort hine

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
DOPI
Junior Member
Junior Member
Posts: 13
Joined: 2007-09-07, 22:58 UTC

Aus QuellDateiname Zielordner generieren-> dann dort hine

Post by *DOPI »

Hi Loitz,

hab hier im Forum schon ne Weile nach Verzeichnissen und Co. "gegoogelt", auch sehr viel gefunden, jedoch nicht genau mein Belang erfüllt, welchen ich kurz darstelle.

Ich brauche ein Tool, welches mir die Möglichkeit bietet, beim Kopieren/Verschieben [F5]/[F6] im Zielverzeichnis erst einen Ordner mit dem resultierenden Quell-Dateinamen (ohne .ext) zu erstellen, und dort hinein erst die selektierte(n) Datei(en) kopiert/verschiebt. Und wenns das noch mit Mehrfachauswahl gäbe, wäre das schon richtig mächtig. (Ich glaub, ich fall um)


Schritt 1:


Linkes Fenster . . . . . . . . . . . . . . . . . . . . . .| . . . . . . . . . . . . . . . . . . .rechtes Fenster
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .|
C:\Bilder\ . . . . . . . . . . . . . . . . . . . . . . . . . .| D:\SortierteBilder\ . . . . . . . . . . . . . . . . .
. .. . . . . . . . . . . . . . . . . . . . . . . . . . .<DIR> | . .. . . . . . . . . . . . . . . . . . . . . . . . .<DIR>
Bild01.jpg . . . . . . . . . . . . . . . . . . .456.234 | Bild01 . . . . . . . . . . . . . . . . . . . . .<DIR>



Schritt 2:



Linkes Fenster . . . . . . . . . . . . . . . . . . . . . .| . . . . . . . . . . . . . . . . . . .rechtes Fenster
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .|
C:\Bilder\ . . . . . . . . . . . . . . . . . . . . . . . . . .| D:\SortierteBilder\Bild01\ . . . . . . . . . . .
. .. . . . . . . . . . . . . . . . . . . . . . . . . . .<DIR> | . .. . . . . . . . . . . . . . . . . . . . . . . . .<DIR>
Bild01.jpg . . . . . . . . . . . . . . . . . . .456.234 | Bild01.jpg . . . . . . . . . . . . . . . .456.234




Ich hoffe, das es zu verstehen ist, und vielleicht jemand ne Idee dazu hat
Danke im Vorraus

Gruß Dopi

.
Wer andern eine Bratwurst brät, der hat ein Bratwurstbratgerät !!!
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Sollen die zu erstellenden Verzeichnisse alle durchnummeriert sein, also Bild01, Bild02 usw?
Falls ja, dann kann man das relativ einfach lösen, mit dem passenden Programm. Ich hab dafür einen MassDirCreator in AutoIt geschrieben, der sowas kann.

Wenn die Verzeichnisnamen unterschiedlich sein müssen, z.B. Bild01, Bild02-schön, Bild03-noch-schöner, dann müsste man anders rangehen.
Da könnte man das Skript nehmen, was ich heute in den anderen Thread gepostet habe, und natürlich ein bisschen anpassen.

EDIT: Das Kopieren der Dateien in die passenden Zielverzeichnisse kann ich im Moment nicht mit bestehenden Skripten/Programmen lösen.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
StatusQuo
Power Member
Power Member
Posts: 1524
Joined: 2007-01-17, 21:36 UTC
Location: Germany

Post by *StatusQuo »

2DOPI
Unten mein Vorschlag dazu für markierte Dateien.
Kopiert z.B.
Bild01.jpg
in
Zielverzeichnis\Bild01\Bild01.jpg
(Zielverzeichnisname = Name der jeweiligen Datei).

Dekodieren in TC mit Datei -> decodieren.
Benutzung mit einem Button / Eintrag im TC Startmenü /...:

Code: Select all

Kommando  : TC_md_and_copy.cmd
Parameter: %L "%T"
Zum Verschieben statt Kopieren kann im Abschnitt ":NoCpSwitch" der Befehl "copy" durch "move" ersetzt werden.

Code: Select all

begin 644 TC_md_and_copy.cmd
M("`@("`@.CH@:'1T<#HO+V=H:7-L97(N8V@O8F]A<F0O=FEE=W1O<&EC+G!H
M<#]T/3$X.#$Q#0H@("!`96-H;R!O9F8-"B`@('-E=&QO8V%L#0H@("!S970@
M8W!!8W1I=F4],`T*("`@<V5T(&-P3T5-/3`-"@T*("`@("`@.B!R96T@8VAE
M8VL@9F]R(&5X:7-T96YC92!O9B!#2$-0+D-/32P@4D5'+D5810T*("`@8V]P
M>2`Z.CH@;G5L(#(^;G5L#0H@("!C:&-P+F-O;2`O/R`^;G5L#0H@("!I9B!N
M;W0@97)R;W)L979E;"`Q("@-"B`@("`@(&-O<'D@.CHZ(&YU;"`R/FYU;`T*
M("`@("`@<F5G+F5X92`O/R`^;G5L#0H@("`I#0H@("!I9B!E<G)O<FQE=F5L
M(#$@*`T*("`@("`@96-H;RX-"B`@("`@(&5C:&\@*BHJ(%=A<FYI;F=>.B!2
M14<N15A%(&%N9"]O<B!#2$-0+D-/32!N;W0@9F]U;F0@7BAS964@97)R;W(@
M;65S<V%G92!A8F]V95XI+"`-"B`@("`@(&=O=&\@3F]#<%-W:71C:`T*("`@
M*0T*("`@8V]P>2!N=6P@;G5L(#YN=6P-"@T*("`@("`@.B!R96T@9V5T(&QO
M8V%L(&-O9&5P86=E(&YU;6)E<G,[('1H86YK<R`R($1A;&%I(&9O<B!T:&ES
M#0H@("!F;W(@+V8@(G-K:7`]-"!T;VME;G,],R(@)25I(&EN("@G<F5G+F5X
M92!Q=65R>2`B2$M%65],3T-!3%]-04-(24Y%7%-94U1%35Q#=7)R96YT0V]N
M=')O;%-E=%Q#;VYT<F]L7$YL<UQ#;V1E4&%G92(@+W8@(D%#4"(G*2!D;R`H
M#0H@("`@('-E="!C<$%C=&EV93TE)6D-"B`@("D-"B`@(&9O<B`O9B`B<VMI
M<#TT('1O:V5N<STS(B`E)6D@:6X@*"=R96<N97AE('%U97)Y(")(2T597TQ/
M0T%,7TU!0TA)3D5<4UE35$5-7$-U<G)E;G1#;VYT<F]L4V5T7$-O;G1R;VQ<
M3FQS7$-O9&5086=E(B`O=B`B3T5-0U`B)RD@9&\@*`T*("`@("!S970@8W!/
M14T])25I#0H@("`I#0H@("!F;W(@)25E(&EN("@B)6-P06-T:79E)2(I(&1O
M(&9O<B`E)68@:6X@*"(E8W!/14TE(BD@9&\@9V]T;R!3=&%R=`T*("`@96-H
M;R`J*BH@5V%R;FEN9UXZ($-O=6QD(&YO="!R971R:65V92!C;V1E<&%G92!I
M;F9O<FUA=&EO;B!W:71H(%)%1RY%6$4L#0H@("!G;W1O($YO0W!3=VET8V@@
M("`-"@T*.E-T87)T("`@#0H@("`@("`Z(')E;2!L;V%D($%.4TD@8V]D97!A
M9V4-"B`@(&-H8W`N8V]M("5C<$%C=&EV924@/B!.54P-"@T*.DYO0W!3=VET
M8V@-"B`@(#HZ(&UD("(E5"5/(B8F8V]P>2`B)5`E3RXE12(@(B54)4\B)FEF
M(&5R<F]R;&5V96P@,2!P875S90T*("`@9F]R("]&(")U<V5B86-K<2!D96QI
M;7,](B`E)64@:6X@*"(E?C$B*2!D;R`H#0H@("`@("!M9"`B)7XR)25^;F4B
M)B9C;W!Y("(E)7YE(B`B)7YD<#(E)7YN92(-"B`@("`@(&EF(&5R<F]R;&5V
M96P@,2!P875S90T*("`@*0T*("`@#0H@("!G;W1O(&-E#0H-"CIC90T*("`@
M("`@.B!R96T@;&]A9"!!4T-)22]/14T@8V]D97!A9V4@86=A:6X-"B`@(&EF
M(&YO="`B)6-P3T5-)2(]/2(P(B!C:&-P+F-O;2`E8W!/14TE(#YN=6P-"@T*
M.F5X#0H-"B`@(#H@<F5M(%-Y;G1A>#H@("`E?FYX,"`B9#I<<&%T:%QF:6QE
M;&ES="YT>'0B(")D.EQT87)G970M<&%T:"(-"B`@(#H@<F5M(&EN(%1#(#H@
M#0H@("`Z("`@("`@("`@("`@($MO;6UA;F1O(#H@5$-?;61?86YD7V-O<'DN
J8VUD#0H@("`Z("`@("`@("`@("`@(%!A<F%M971E<CH@)4P@(B54(@T*
`
end
sum -r/size 15830/1617
Der Kern der Sache ist:

Code: Select all

   for /F "usebackq delims=" %%e in ("%~1") do (
      md "%~2%%~ne"&&copy "%%~e" "%~dp2%%~ne"
      if errorlevel 1 pause
   )
Who the hell is General Failure, and why is he reading my disk?
-- TC starter menu: Fast yet descriptive command access!
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Jep, die Lösung von StatusQuo ist schon sehr gut.

Wobei ich noch ein paar Fragen an DOPI habe:
  • 1. Geht es immer um dasselbe Zielverzeichnis?
    2. Liegen die (Quell)dateien alle im selben Verzeichnis? Falls ja, dann kann man sich das Erstellen einer Datei mit zu bearbeitenden Dateinamen sparen und stattdessen eine for-Schleife um ein 'dir /b /ogn *.jpg' oder so basteln. Ist ggf. dadurch einfacher zu bedienen.
EDIT: Ich korrigiere: es wird ja gar keine Datei manuell erstellt. Das macht ja der TC beim Aufruf über die Parameter.
Egal, evtl. isses hilfreich, das zu ändern für den TC-losen Fall (böse, denn wann soll das sein? *fg*)

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
StatusQuo
Power Member
Power Member
Posts: 1524
Joined: 2007-01-17, 21:36 UTC
Location: Germany

Post by *StatusQuo »

Dalai wrote:evtl. isses hilfreich, das zu ändern für den TC-losen Fall
Wenn's denn sein muss: ;)
Dazu müsste in der Batch IMO nur die vorhandene FOR-Zeile ausgetauscht werden gegen

Code: Select all

   for %%e in ("%~1") do (
Alternative für die bestehende TC-Batch:
Die passende Liste für z.B. alle *.jpg kann von der Kommandozeile aus so erstellt werden:

Code: Select all

for %e in (*.jpg) do @echo %~fe>d:\path\listfile.txt
Danach kann sie auch ohne TC wie gewohnt benutzt werden:

Code: Select all

TC_md_and_copy.cmd d:\path\listfile.txt d:\target_path
Allerdings muss man sich bei manueller Verwendung wieder Gedanken machen, ob der User einen Backslash angegeben hat oder nicht (beim Zielverzeichnis muss ein abschließender Backslash hin). Dazu gab's ja im angesprochenen anderen Thread gerade ein paar Lösungen...
Who the hell is General Failure, and why is he reading my disk?
-- TC starter menu: Fast yet descriptive command access!
DOPI
Junior Member
Junior Member
Posts: 13
Joined: 2007-09-07, 22:58 UTC

Post by *DOPI »

Hey Jungs, [StatusQuo / Dalia] erstmal danke an Euch für die fixe Hilfe !

Noch etwas zur Info:
Es geht um die Umstrukturierung meiner Multimedia-Sammlung.
Ich habe auf verschiedenen Volumes in irgendwelchen Pfaden Filmdateien liegen, zu denen jeweils auch Zusatz-Dateien mit gleichem Vornamen gehören.

Beispiel: . . . . . . . . . (hier liegen Quelldaten)

C:\Comedy\
.<Scary Movie1.mpg>
. . Scary Movie1_CoverFront.jpg
. . Scary Movie1_CoverBack.jpg
. . Scary Movie1_Inlet.jpg
. . Scary Movie1.nfo
. . Lammbock.mov
. . Lammbock_CoverFront.jpg
. . Lammbock_CoverBack.jpg
. . Lammbock_Inlet.jpg
. . Lammbock.nfo
. . usw.

(und auch hier liegen Quelldaten)

F:\Neue\
. . Tarzoon - Die Schande des Dschungels.avi
. . Tarzoon - Die Schande des Dschungels_CoverFront.jpg
. . Tarzoon - Die Schande des Dschungels_CoverBack.jpg
. . Tarzoon - Die Schande des Dschungels_Inlet.jpg
. . Tarzoon - Die Schande des Dschungels.nfo
. . usw.

Wir gehen mal davon aus, das im TC der CRSR-Balken im QuellFenster auf der "Scary Movie1.mpg" -Datei steht, und im Zielfenster ist der Pfad "X:\Alle Filme\" aktiv.

Wenn ich nun F5 drücke, erscheint der aktivierte Kopie-Dialog:
_______________________________________________

Kopieren von Scary Movie1.mpg nach
X:\Alle Fime\Scary Movie1.mpg
---------------------------------------------------------------------------
nur Dateien diesen Typs . . . . . . . . . . . . . . . . . . [Optionen]
_______________________________________________

welcher als Ziel den Pfad des TargetFensters voranstellt.
In dieser Vorgabezeile müsste sich ein Template oder eine StringVariable platzieren lassen, welche den QuellDateiNamen repräsentiert.

Normales Ergebnis:
X:\Alle Fime\Scary Movie1.mpg

Ergebnis mit Platzhalter für QuellDateiNamen:
X:\Alle Fime\%Platzhalter_für_QuellDateiName%\Scary Movie1.mpg

daraus würde sich wiederum dieser neue Pfad ergeben,
X:\Alle Fime\Scary Movie1\Scary Movie1.mpg . . . . . . . . . . . . . . . <- und so solls auch sein !!!

welchen TC im Zielordner dann bei Bestätigung mit [OK] erzeugen würde, um die Datei dort hinein kopieren zu können.
Wenn TC dann zusätzlich noch in diesen neuen ZielOrdner wechseln würde, wäre das schon sensationell, denn dann brauchte ich im Quellfenster nur die restlichen Files nachschieben.

Dies ---v

-> Datei wählen / (Shift-F6) / Namen kopieren / abbrechen / Fenster wechseln / F7 / Namen einfügen / Eingabe / in Ordner wechseln

ist die umständliche, bisherige Vorgehensweise um dasselbe zu erreichen, was bei größeren Datenmengen zu sehr nervigen Auseinandesetzungen mit meinen Fingern führt.

Der Neue Ordnername soll sich definitiv und ausschließlich aus dem korrespondierenden Dateinamen ergeben. - ohne Zähler usw.
Ich hoffe, ich konnte diesen Thread ein wenig "hell machen" !!!

Gruß Dopi



PS: Es existiert ja eine Markierfunktion für Endungen, - <Alle Dateien mit gleicher Erweiterung markieren>
- - gibts auch eine für <Alle Dateien mit gleichem Vornamen markieren> ?
Wer andern eine Bratwurst brät, der hat ein Bratwurstbratgerät !!!
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

OK, du willst also alles in einem Zielverzeichnis haben. Dann kannst du problemlose StatusQuos Skript nutzen.

Dafür markierst du den Code aus StatusQuos Post oben, fügst ihn in eine neue Textdatei ein und speicherst es als <name>.uue. Im TC dann doppelklickst du auf diese Datei und bestätigst das "Zielverzeichnis" für die "enthaltene" (eher codierte) Datei. Dann kommt eine Datei namens TC_md_and_copy.cmd raus.
In der Datei steht ganz unten was zur Syntax und Bedienung:
: rem Syntax: %~nx0 "d:\path\filelist.txt" "d:\target-path"
: rem in TC :
: Kommando : TC_md_and_copy.cmd
: Parameter: %L "%T"
Du legst also einen neuen Button mit den Parametern oben an.

Zur Ausführung alle gewünschten Dateien markieren (linke Seite, auf der rechten Seite muss das Zielverzeichnis stehen!) und dann den neuen Button drücken und schon wird das Skript ausgeführt und kopiert die Dateien entsprechend ins Zielverzeichnis (mit Unterverzeichnis natürlich).

Es kann sein, dass du den Parameter %L mit Anführungszeichen versehen musst.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
DOPI
Junior Member
Junior Member
Posts: 13
Joined: 2007-09-07, 22:58 UTC

Post by *DOPI »

@StatusQuo

Hab den Code von Dir mal decoiert und eingebunden - Bombastisch . fast genauso solls sein. Das TC gleich mit ins Zielverz. wechselt, pass ich mir dann selber an (ich versuchs zumindest - muß mich mit den Befehlen mal wieder auseinandersetzen - DOS ist lange her, aber wie man sieht auch immer mal wieder sehr hilfreich, bloß die Syntax vergißt man immer wieder, wenn man sich länger nicht damit beschäftigt)

Allerdings ist mir nicht ganz klar, wozu im Source anfangs die ganze Codepage-Abfrage dient. Sind es Fragmente aus einer anderen Zeilvorgabe ?

Vielen Dank nochmals euch beiden !!!
CU
Wer andern eine Bratwurst brät, der hat ein Bratwurstbratgerät !!!
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Allerdings ist mir nicht ganz klar, wozu im Source anfangs die ganze Codepage-Abfrage dient. Sind es Fragmente aus einer anderen Zeilvorgabe?
Nein, es geht einfach um Zeichensätze. Teste es selbst aus und wechsle in ein Verzeichnis, das eine Textdatei mit Umlauten im Text enthält und mache ein type <datei> auf der Konsole und du wirst sehen, dass die Umlaute (also der Inhalt der Textdatei) falsch ausgegeben werden.

Genau das verhindert die Abfrage der Codepages in der Registry. Das chcp schließlich ändert die Codepage auf ANSI, dann kommt der Rest der Batch und am Ende wird die Codepage wieder zurückgewechselt.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
DOPI
Junior Member
Junior Member
Posts: 13
Joined: 2007-09-07, 22:58 UTC

Post by *DOPI »

OKI -DOKI


Editiert:
Ich hätte schon noch gern erklärt bekommen, was sich hinter folgenden Paras (diese Menge erschlägt mich förmlich) in der For/Do - Schleife - verbirgt; möcht gern nachvollziehen, was da vor sich geht:

%T%O
&&copy
"usebackq delims=" %%e in ("%~1")
"%%~e" "%~dp2%%~ne"

-> entnommen aus:
:: md "%T%O"&&copy "%P%O.%E" "%T%O"&if errorlevel 1 pause
for /F "usebackq delims=" %%e in ("%~1") do (
md "%~2%%~ne"&&copy "%%~e" "%~dp2%%~ne"
if errorlevel 1 pause
)

: rem Syntax: %~nx0 "d:\path\filelist.txt" "d:\target-path"
Danke mfG Dopi




Editiert 10.04.2008-22:03

- DO IT YOURSELF - ! ! ! ;) - Tschakka -du schaffst es - ;)

Hab mal nach DOS-Befehlen gegoogelt, und BefehlszeilenParas sowie Platzhalterdefinitionen und Syntaxregeln gecheckt !!!
UFFFF - ist das heftig, - ich mein die vielen Möglichkeiten, welche sich aus der Kombi mit anderen Befehlen in Batch-Dateien auf DOS-Ebene ergeben, und welche Macht sich hinter einem geschickt formulierten 2-Zeiler (in Bezug auf das Verhältnis Aufwand/Nutzen) verbirgt, ist schon heavy. (und gerade in dieser speziellen FOR-IN-DO Kombi )

Wollte damit eigentlich zum Ausdruck bringen, wie arschdämlich und naiv doch die Bitte meines ersten Edits oben ist - Sorry -

Also, alles ist hell und das ist gut so
ein letztes Dankeschön für Eure Hilfe und Tschöö
Wer andern eine Bratwurst brät, der hat ein Bratwurstbratgerät !!!
Post Reply