Kopieren von Dateien in jeweiliges Unterverzeichnis

German support forum

Moderators: Hacker, Stefan2, white

sarahschnecke
Junior Member
Junior Member
Posts: 11
Joined: 2004-09-11, 02:46 UTC

Kopieren von Dateien in jeweiliges Unterverzeichnis

Post by *sarahschnecke »

Ich benutze den TC jetzt auch schoin einige Jahre, aber heute komme ich nicht klar. Vieleicht kann mir ja hier jemand helfen.

Also:
Ich finde über die Suche bestimmte Dateien entsprechend meiner Suchkriterien. Diese Dateien sind in diversen Unterverzeichnisse verstreut.

Nun möchte ich diese "gefundenen" Dateien in ihr jeweiliges Oberverzeichnis (Sorry mir fällt gerade kein Gegenteil von Unterverzeichnis ein) verschieben - Sprich eine Verzeichnis-Ebene höher.

Mit einzelnen Dateien funktioniert dies mit ".." im >Bewegen<-Pop-Out auch blendend, nur wenn es mehrere Dateien sind landen sie immer im Root-Verzeichnis und somit verliere ich jede Ordnung.

Wie kann ich das richtig machen?

Danke!
User avatar
chriss
Senior Member
Senior Member
Posts: 221
Joined: 2003-02-12, 10:17 UTC

Post by *chriss »

moin

ich würde es so machen:

- die dateien suchen
- mit alt+w die ergebnisse in einer liste zusammenfassen
- mit strg+waagerechter pfeil die dateien auswählen
- mit der maus auf [..] ziehen.

ich hoffe du brauchst es nicht so oft :)

ansonsten könnte ich mit das evtl per batch vorstellen.
gruß


chriss
User avatar
Hacker
Moderator
Moderator
Posts: 13142
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

- mit der maus auf [..] ziehen
:!: Wie ich es verstehe, wurde das die Dateien in den Search Root verschieben, also besser vorher testen...
(Und neine, mir fallt kein Weg ein um die Dateien einfach zu verschieben... Vielleicht mit Makebat "move %P%N %P..\" oder ahnlich mit lst2run oder lst2mlt...)

HTH
Roman
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Re: Kopieren von Dateien in jeweiliges Unterverzeichnis

Post by *Sheepdog »

sarahschnecke wrote:Nun möchte ich diese "gefundenen" Dateien in ihr jeweiliges Oberverzeichnis (Sorry mir fällt gerade kein Gegenteil von Unterverzeichnis ein) verschieben - Sprich eine Verzeichnis-Ebene höher.

Wie kann ich das richtig machen?
Ich gehe mal davon aus, dass Du Win XP benutzt. Dann benötigst Du eine Batchdatei:

Code: Select all

@echo off
rem Dateien in ihr Vaterverzeichnis verschieben
rem Diese Batchdatei auf einen Button 
rem Kommando: %Pfad_zur_batch%\Vater.bat
rem Parameter: %L
rem Dann einfach die Suche aufrufen und anwenden, [NUM+] drücken,
rem um alle auszuwählen und auf den Button drücken 


for /f "tokens=*" %%a in (%1) do move "%%~fna" "%%~dpa\.."

REM zur Erlärung: tokens=* bewirkt, dass die komplette Zeile als ein String behandelt wird.
rem Wäre dies nicht der Fall, würde bei Namen/Pfaden mit leerzeichen der String nach
rem dem Leerzeichen abgeschnitten werden, da defaultmäßig Leerzeichen und Tabulatoren als
rem Trennzeichen wirken.
rem ein "delims=" hätte die gleiche Wirkung, da damit kein Trennzeichen mehr definiert ist.

Wie beschrieben, den code in eine *.bat Datei Speichern und auf einen Button legen. Das ganze läßt sich dann mit Parameter %L aufrufen. Ach so, die Zeilen, die mit 'rem' anfangen, kannst Du natürlich weglassen.

Hoffe das hilft

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
sarahschnecke
Junior Member
Junior Member
Posts: 11
Joined: 2004-09-11, 02:46 UTC

Post by *sarahschnecke »

Danke "chriss" und "hacker" für Euere Bemühungen.

Vielen Dank "Sheepdog" für die Batch-Lösung, damit klappt es ausgezeichnet. Ich habe zwar keinen Schimmer, was die Zeile so genau bedeutet, aber egal!

Klasse!
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

sarahschnecke wrote: Ich habe zwar keinen Schimmer, was die Zeile so genau bedeutet, aber egal!
Mit dem 'for' Befehl kann man eine Befehlsfolge auf mehrere Dateien oder Zeilen einer Datei anwenden.

In diesem Fall wird durch den Parameter %L vom TC eine Liste mit den gewählten Dateien an den 'for' Befehl übergeben. Der Dateiname dieser Liste wird in der DOS-Box in der Variablen '%1' gespeichert .
Der Parameter "tokens=*" bewirkt, dass nicht nur die erste Zeichenkette eingelesen wird, sondern alle Zeichenketten bis zum Ende der Zeile. Im Normalfall wäre der Dateiname ja in der ersten Zeichenkette gespeichert, aber wenn der Pfad oder der Dateiname Leerzeichen enthält, würde eben der Rest, der nach dem Leerzeichen kommt durch den 'for'-Befehl nicht mehr ausgewertet werden - und die Batch würde nicht funktionieren.

also bedeutet: 'for /f "tokens=*" %%a in (%1) '

Lies aus der Datei '%1' jeweils die gesamte Zeile in die Variable %a ein. Das doppelte Prozentzeichen vor 'a' ist nur nötig, wenn die Zeile in einer Batchdatei steht. Wenn man das direkt auf der Kommandozeile eintippen würde, bräuchte man nur ein Prozentzeichen.

do move heisst, dass mit dem Wert aus jeder Zeile der 'move' Befehl aufgerufen wird.

"%%~" nimmt den Wert aus der nachfolgenden Variable und erzeugt entsprechend der anderen Buchstaben bestimmte Parameter wie Pfad,Größe, Attribute etc. zu dieser Datei.
"%%~fna" bedeutet f= Pfad mit Laufwerksbuchstabe n=Dateiname a=aus der Variablen %a erzeugen. Jetzt, als ich das schreibe, habe ich bemerkt, dass dieser Asudruck eigentlich auch durch "%%a" hätte ersetzt werden können.
"%%~dpa\.." erzeugt zur Variablen %a den Laufwerksbuchstaben (d) und den Pfad (p). Der Backslash und die beiden Punkte entsprechen Deinem '..' im 'Bewegen' Dialog.

Wenn also der Deine Liste so aussähe:

Code: Select all

C:\unter\zwei\Datei.txt
d:\drüber\eins\file.txt
Erzeugt die 'for' Zeile folgende ausgaben auf der Kommandozeile:

move c:\unter\zwei\Datei.txt c:\unter\zwei\..
move d:\drüber\eins\file.txt d:\drüber\eins\..


Was man mit 'for' und anderen Batch -Parametern alles machen kann, findet man übrigens in der Windows -Hilfe, wenn man 'batch' als Suchbegriff eingibt.

Vielleicht verstehst Du ja jetzt etwa besser, was die batch macht. Wenn nicht, egal ;) .

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
User avatar
chriss
Senior Member
Senior Member
Posts: 221
Joined: 2003-02-12, 10:17 UTC

Post by *chriss »

sarahschnecke wrote:Ich habe zwar keinen Schimmer, was die Zeile so genau bedeutet, aber egal!

Klasse!
danke sarah - you made my day, aber echt :lol: :lol: :lol:

@sheepdog

danke für die erklärung!
gruß


chriss
sarahschnecke
Junior Member
Junior Member
Posts: 11
Joined: 2004-09-11, 02:46 UTC

Post by *sarahschnecke »

Auch nochmal vielen Dank für die Erklärung!

Meine Batch-Kenntnisse sind eher "grundlagenorientiert"
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

Na dann poetest Du halt das nächste mal wieder Dein Problem und man wird sehen, ob sich eine Lösung findet.

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
sarahschnecke
Junior Member
Junior Member
Posts: 11
Joined: 2004-09-11, 02:46 UTC

Post by *sarahschnecke »

Lang, lang ist es her. :D

Die Batch-Datei hat mir nun Jahrelang sehr gute Dienste geleistet, nun wollte ich fragen, wie ich die .bat erweitern kann, damit auch Dateien, deren Namen Umlaute enthält verschoben werden.
Denn sobald "ä,ö,ü" im Namen sind, wird das File leider ignoriert.

Wäre wirklich Spitze, wenn mir nochmal jemand helfen könnte.
Danke! :wink:
User avatar
HolgerK
Power Member
Power Member
Posts: 5409
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

- <Alt+F7> "Suchen"
- [anwenden]
- <+> "Markieren"
- <STRG+M> "Dateien->Mehrfach Umbenennen Tool"
Mehrfach Umbenennen Tool wrote:Umbenennen Maske: #PARENT#[N]
Erweiterung: [E]
Suchen & Ersetzten
Suche nach: #PARENT#
Ersetzen durch: ..\
Im MUT mit <F2> "Einstellungen speichern" als "Move UP" abspeichern, damit man schnell wieder drauf zugreifen kann.

HTH,
Holger
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Mehrfach Umbenennen Tool wrote:Umbenennen Maske: #PARENT#[N]
Erweiterung: [E]
Suchen & Ersetzten
Suche nach: #PARENT#
Ersetzen durch: ..\
Bemerkenswert ...
Ich habe ein bisschen herumgespielt, dass per RegEX mit einem Durchlauf zu erledigen - geht aber nicht. Oder doch?

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
HolgerK
Power Member
Power Member
Posts: 5409
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Doch, das sollte auch mit Regex gehen:
Mehrfach Umbenennen Tool wrote:Umbenennen Maske: [N]
Erweiterung: [E]
Suchen & Ersetzten
Suche nach: ^(.*)
Ersetzen durch: \.\.\\$1
[x] Regex
Das sieht allerdings immer so high sophisticated, cryptical aus. :wink:
In beiden Fällen allerdings darauf aufpassen, dass man keine Verzeichnisse zusätzlich zu den Files markiert.
Am besten in der Suche per "Erweitert [x] Attribute: [ ] Verzeichnis" von vornherein verhindern, dass Verzeichnisse überhaupt gelistet werden.

Mit freundlichem Gruß,
Holger
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Danke, Holger

kommt in die Schatzkiste ..

Peter
TC 10.xx / #266191
Win 10 x64
StatusQuo
Power Member
Power Member
Posts: 1524
Joined: 2007-01-17, 21:36 UTC
Location: Germany

Post by *StatusQuo »

2sarahschnecke
Denn sobald "ä,ö,ü" im Namen sind, wird das File leider ignoriert.
Falls Du statt HolgerKs MUT/RegEx-Lösung lieber die gewohnte Batch von Sheepdog weiter verwenden möchtest:
hier eine ausgebaute Variante, die auch Sonderzeichen/Umlaute verarbeitet (entpacken in TC mit Datei->decodieren):

Code: Select all

begin 644 TC_Move2Parent.cmd
M("`@0&5C:&\@;V9F#0H@("!S971L;V-A;`T*("`@<V5T(&-P06-T:79E/3`-
M"B`@('-E="!C<$]%33TP#0H-"B`@("`@(#H@<F5M(&-H96-K(&9O<B!E>&ES
M=&5N8V4@;V8@0TA#4"Y#3TTL(%)%1RY%6$4-"B`@(&-O<'D@.CHZ(&YU;"`R
M/FYU;`T*("`@8VAC<"YC;VT@+S\@/FYU;`T*("`@:68@;F]T(&5R<F]R;&5V
M96P@,2`H#0H@("`@("!C;W!Y(#HZ.B!N=6P@,CYN=6P-"B`@("`@(')E9RYE
M>&4@+S\@/FYU;`T*("`@*0T*("`@:68@97)R;W)L979E;"`Q("@-"B`@("`@
M(&5C:&\N#0H@("`@("!E8VAO("HJ*B!787)N:6YG7CH@4D5'+D5812!A;F0O
M;W(@0TA#4"Y#3TT@;F]T(&9O=6YD(%XH<V5E(&5R<F]R(&UE<W-A9V4@86)O
M=F5>*2P@#0H@("`@("!G;W1O($YO0W!3=VET8V@-"B`@("D-"B`@(&-O<'D@
M;G5L(&YU;"`^;G5L#0H-"B`@("`@(#H@<F5M(&=E="!L;V-A;"!C;V1E<&%G
M92!N=6UB97)S.R!T:&%N:W,@,B!$86QA:2!F;W(@=&AI<PT*("`@9F]R("]F
M(")S:VEP/30@=&]K96YS/3,B("4E:2!I;B`H)W)E9RYE>&4@<75E<GD@(DA+
M15E?3$]#04Q?34%#2$E.15Q365-414U<0W5R<F5N=$-O;G1R;VQ3971<0V]N
M=')O;%Q.;'-<0V]D95!A9V4B("]V(")!0U`B)RD@9&\@*`T*("`@("!S970@
M8W!!8W1I=F4])25I#0H@("`I#0H@("!F;W(@+V8@(G-K:7`]-"!T;VME;G,]
M,R(@)25I(&EN("@G<F5G+F5X92!Q=65R>2`B2$M%65],3T-!3%]-04-(24Y%
M7%-94U1%35Q#=7)R96YT0V]N=')O;%-E=%Q#;VYT<F]L7$YL<UQ#;V1E4&%G
M92(@+W8@(D]%34-0(B<I(&1O("@-"B`@("`@<V5T(&-P3T5-/24E:0T*("`@
M*0T*("`@9F]R("4E92!I;B`H(B5C<$%C=&EV924B*2!D;R!F;W(@)25F(&EN
M("@B)6-P3T5-)2(I(&1O(&=O=&\@4W1A<G0-"B`@(&5C:&\@*BHJ(%=A<FYI
M;F=>.B!#;W5L9"!N;W0@<F5T<FEE=F4@8V]D97!A9V4@:6YF;W)M871I;VX@
M=VET:"!214<N15A%+`T*("`@9V]T;R!.;T-P4W=I=&-H("`@#0H-"CI3=&%R
M="`@(`T*("`@("`@.B!R96T@;&]A9"!!3E-)(&-O9&5P86=E#0H@("!C:&-P
M+F-O;2`E8W!!8W1I=F4E(#X@3E5,#0H-"CI.;T-P4W=I=&-H#0H@("!I9B`@
M("`@(B5^,2(]/2(B(&5C:&\@4WEN=&%X.B9E8VAO("`@("5^;G@P(")D.EQP
M871H7&9I;&5L:7-T+G1X="(@("`@)F=O=&\@8V4-"B`@(`T*("`@<F5M($1A
M=&5I96X@:6X@:6AR(%9A=&5R=F5R>F5I8VAN:7,@=F5R<V-H:65B96X-"B`@
M(')E;2!$:65S92!"871C:&1A=&5I(&%U9B!E:6YE;B!"=71T;VX-"B`@(')E
M;2!+;VUM86YD;SH@)5!F861?>G5R7V)A=&-H)5Q6871E<BYB870-"B`@(')E
M;2!087)A;65T97(Z("5,#0H@("!R96T@1&%N;B!E:6YF86-H(&1I92!3=6-H
M92!A=69R=69E;B!U;F0@86YW96YD96XL(%M.54TK72!D<H%C:V5N+`T*("`@
M<F5M('5M(&%L;&4@875S>G5WA&AL96X@=6YD(&%U9B!D96X@0G5T=&]N(&1R
M@6-K96X-"@T*("`@9F]R("]F(")T;VME;G,]*B(@)25A(&EN("@E,2D@9&\@
M;6]V92`B)25^9FYA(B`B)25^9'!A7"XN(@T*#0H@("!214T@>G5R($5R;(1R
M=6YG.B!T;VME;G,]*B!B97=I<FMT+"!D87-S(&1I92!K;VUP;&5T=&4@6F5I
M;&4@86QS(&5I;B!3=')I;F<@8F5H86YD96QT('=I<F0N#0H@("!R96T@5X1R
M92!D:65S(&YI8VAT(&1E<B!&86QL+"!W@7)D92!B96D@3F%M96XO4&9A9&5N
M(&UI="!L965R>F5I8VAE;B!D97(@4W1R:6YG(&YA8V@-"B`@(')E;2!D96T@
M3&5E<GIE:6-H96X@86)G97-C:&YI='1E;B!W97)D96XL(&1A(&1E9F%U;'1M
MA.%I9R!,965R>F5I8VAE;B!U;F0@5&%B=6QA=&]R96X@86QS#0H@("!R96T@
M5')E;FYZ96EC:&5N('=I<FME;BX-"B`@(')E;2!E:6X@(F1E;&EM<STB(&B$
M='1E(&1I92!G;&5I8VAE(%=I<FMU;F<L(&1A(&1A;6ET(&ME:6X@5')E;FYZ
M96EC:&5N(&UE:'(@9&5F:6YI97)T(&ES="X@#0H-"B`@(&=O=&\@8V4-"@T*
M.F-E#0H@("`@("`Z(')E;2!L;V%D($%30TE)+T]%32!C;V1E<&%G92!A9V%I
M;@T*("`@:68@;F]T("(E8W!/14TE(CT](C`B(&-H8W`N8V]M("5C<$]%324@
M/FYU;`T*#0HZ97@-"@T*("`@.B!R96T@4WEN=&%X.B`@("5^;G@P(")D.EQP
3871H7&9I;&5L:7-T+G1X="(-"@``
`
end
sum -r/size 9579/2089
Who the hell is General Failure, and why is he reading my disk?
-- TC starter menu: Fast yet descriptive command access!
Post Reply