Kopieren von Dateien in jeweiliges Unterverzeichnis
Moderators: Hacker, Stefan2, white
-
- Junior Member
- Posts: 11
- Joined: 2004-09-11, 02:46 UTC
Kopieren von Dateien in jeweiliges Unterverzeichnis
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!
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!
- mit der maus auf [..] ziehen

(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
Re: Kopieren von Dateien in jeweiliges Unterverzeichnis
Ich gehe mal davon aus, dass Du Win XP benutzt. Dann benötigst Du eine Batchdatei: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?
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.
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
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
-
- Junior Member
- Posts: 11
- Joined: 2004-09-11, 02:46 UTC
Mit dem 'for' Befehl kann man eine Befehlsfolge auf mehrere Dateien oder Zeilen einer Datei anwenden.sarahschnecke wrote: Ich habe zwar keinen Schimmer, was die Zeile so genau bedeutet, aber egal!
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
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
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
-
- Junior Member
- Posts: 11
- Joined: 2004-09-11, 02:46 UTC
-
- Junior Member
- Posts: 11
- Joined: 2004-09-11, 02:46 UTC
Lang, lang ist es her.
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!

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!

- <Alt+F7> "Suchen"
- [anwenden]
- <+> "Markieren"
- <STRG+M> "Dateien->Mehrfach Umbenennen Tool"
HTH,
Holger
- [anwenden]
- <+> "Markieren"
- <STRG+M> "Dateien->Mehrfach Umbenennen Tool"
Im MUT mit <F2> "Einstellungen speichern" als "Move UP" abspeichern, damit man schnell wieder drauf zugreifen kann.Mehrfach Umbenennen Tool wrote:Umbenennen Maske: #PARENT#[N]
Erweiterung: [E]
Suchen & Ersetzten
Suche nach: #PARENT#
Ersetzen durch: ..\
HTH,
Holger
Bemerkenswert ...Mehrfach Umbenennen Tool wrote:Umbenennen Maske: #PARENT#[N]
Erweiterung: [E]
Suchen & Ersetzten
Suche nach: #PARENT#
Ersetzen durch: ..\
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
Win 10 x64
Doch, das sollte auch mit Regex gehen:
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
Das sieht allerdings immer so high sophisticated, cryptical aus.Mehrfach Umbenennen Tool wrote:Umbenennen Maske: [N]
Erweiterung: [E]
Suchen & Ersetzten
Suche nach: ^(.*)
Ersetzen durch: \.\.\\$1
[x] Regex

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