Discussion:
xcopy aus mehreren Unterverzeichnissen in *ein* Zielverzeichnis
(zu alt für eine Antwort)
Ulrich F. Heidenreich
2011-08-23 14:15:57 UTC
Permalink
Dzien' dobry!

Sollte mich langsam mein Alzheimer soweit eingeholt haben, daß manchen
von euch meine Frage trollig erscheint, dann ignoriert mich bitte. An
den Rest der Gemeinde die Dumme(?) Frage: Wie kopiere ich unter DOS
Dateien mehrerer Unterverzeichnisse in ein Zielverzeichnis?

Gegeben sei Q:\quelle\uvz1\, Q:\quelle\uvz2\, ... Q:\quelle\uvzn-1\,
Q:\quelle\uvzn\. Daraus sollen alle *.avi nach Z:\ziel\

Ein zunächst naheliegendes "XCOPY Q:\quelle\*.avi /s Z:\ziel" macht
da freilich Fuzzak, weil es die Unterverzeichnisstruktur von Q:\quelle
in Z:\ziel abbildet. Was genau nicht geschehen soll, sondern es sollen
die avis aus allen Quellverzeichnissen in einem einzigen Zielverzeichnis
Z:\ziel\ "eingesammelt" werden.

Jemand ne Idee?
"DOS" bedeutet immer noch die unterm Win9x liegende "Shell".

TIA,
Ulrich
--
So versendet Amazon Festplatten:
<Loading Image...>
<Loading Image...>
Christoph Sternberg
2011-08-23 15:13:28 UTC
Permalink
Post by Ulrich F. Heidenreich
Was genau nicht geschehen soll, sondern es sollen
die avis aus allen Quellverzeichnissen in einem einzigen Zielverzeichnis
Z:\ziel\ "eingesammelt" werden.
Das geht AFAIK mit xcopy nicht. Dafür nahm man "früher" den großen
NC-Konkurrenten XTree ;-)

Trick 17: Packer Deiner Wahl, ohne Pfadstruktur packen lassen und danach
wieder auspacken.

Christoph Sternberg */\
Christian Potzinger
2011-08-23 15:29:11 UTC
Permalink
Post by Christoph Sternberg
Trick 17: Packer Deiner Wahl, ohne Pfadstruktur packen
lassen und danach wieder auspacken.
Wäre eine Möglichkeit. Aber wieso nicht einfach per Batch?

XCOPY X:\QUELLE1\*.AVI /S Z:\ZIEL\
XCOPY X:\QUELLE1\*.AVI /S Z:\ZIEL\
...

?
--
ryl: G'Kar
Christoph Sternberg
2011-08-23 19:02:49 UTC
Permalink
Post by Christian Potzinger
Wäre eine Möglichkeit. Aber wieso nicht einfach per Batch?
XCOPY X:\QUELLE1\*.AVI /S Z:\ZIEL\
XCOPY X:\QUELLE1\*.AVI /S Z:\ZIEL\
Je nach Verzeichnisstruktur und Verschachtelungstiefe kann das aber in 'ne
ziemliche Sysiphusarbeit ausarten. Ausserdem tät's dabei auch ein schlichter
copy, das /s beim xcopy wäre wieder kontraproduktiv.

Christoph Sternberg */\
Christian Potzinger
2011-08-23 20:17:08 UTC
Permalink
Post by Christoph Sternberg
Je nach Verzeichnisstruktur und Verschachtelungstiefe kann das
aber in 'ne ziemliche Sysiphusarbeit ausarten. Ausserdem tät's
dabei auch ein schlichter copy, das /s beim xcopy wäre wieder
kontraproduktiv.
Da hast du auch wieder wahr...

Ich persönlich würde ja ein kleines Programm in QBasic schreiben,
dass mir alle gwünschten Dateien mit einer bestimmten Endung auf
der Platte anzeigt und auf tastendruck dahin verschiebt/kopiert,
wo ich es will. Das dürfte dem OP aber auch nicht helfen...
--
ryl: G'Kar
Ulrich F. Heidenreich
2011-08-26 14:55:42 UTC
Permalink
Post by Christian Potzinger
Post by Christoph Sternberg
Trick 17: Packer Deiner Wahl, ohne Pfadstruktur packen
lassen und danach wieder auspacken.
Wäre eine Möglichkeit. Aber wieso nicht einfach per Batch?
XCOPY X:\QUELLE1\*.AVI /S Z:\ZIEL\
XCOPY X:\QUELLE1\*.AVI /S Z:\ZIEL\
Häh?

Zweimal "Quelle1" war wohl zwar ein Tippfehler, aber auch jenes würde
am Ziel die Verzeichnisstruktur der Quelle wieder herstellen, statt die
Datenbestände aus *mehreren* Quellen in *ein* Ziel zusammenzuführen.

Danke fürs Brainstorming; ich habe derweil - leicht offtopic - eine
Buntklickie-Lösung gefunden, die unter der hundegebellfreien Suche
des Win95 auch ziemlich schmerzlos abläuft:

F3 im übergeordneten Quellordner drücken. *.AVI wäheln. Unterordner
einbeziehen. Aufs Suchergebis dann CTRL-A, CTRL-C und CTRL-V in den
Zielordner anwenden. Geht fast genauso ohne Mausarmrisiko wie unter
DOS. #-)

CU!
Ulrich
--
In 3 Monaten und 29 Tagen ist Weihnachten
Programme, soviel ihr wollt; Preise, die ihr selbst bestimmt:
Schaut einfach mal auf ftp://warez.invalid.de rein
Stellt euch vor, es ist Freitag und keiner geht hin!
Christoph Sternberg
2011-08-26 15:45:55 UTC
Permalink
Post by Ulrich F. Heidenreich
F3 im übergeordneten Quellordner drücken. *.AVI wäheln. Unterordner
einbeziehen. Aufs Suchergebis dann CTRL-A, CTRL-C und CTRL-V in den
Zielordner anwenden.
Stimmt auffallend, auf die simpelsten Lösungen kommt man zuletzt ;-)

Christoph Sternberg */\
Ulrich F. Heidenreich
2011-08-26 16:05:21 UTC
Permalink
Post by Christoph Sternberg
Post by Ulrich F. Heidenreich
F3 im übergeordneten Quellordner drücken. *.AVI wäheln. Unterordner
einbeziehen. Aufs Suchergebis dann CTRL-A, CTRL-C und CTRL-V in den
Zielordner anwenden.
Stimmt auffallend, auf die simpelsten Lösungen kommt man zuletzt ;-)
Nuja. Ich hatte halt nach einer DOS-Lösung gesucht, weil mir Windows da
hoffnungslos zu kompliziert schien. Versuche zum Beispiel mal nur, ein
eigentlich völlig Triviales "ren *.foo *.bar" mit dem GUI zu lösen #-(
Hier hatte allerdings mein gutes altes Windows noch die Nase vorn.

Danke nochmal an alle Mitdenker,
Ulrich
--
In 3 Monaten und 29 Tagen ist Weihnachten
Programme, soviel ihr wollt; Preise, die ihr selbst bestimmt:
Schaut einfach mal auf ftp://warez.invalid.de rein
Stellt euch vor, es ist Freitag und keiner geht hin!
Christian Potzinger
2011-08-26 17:13:02 UTC
Permalink
Post by Ulrich F. Heidenreich
Post by Christoph Sternberg
Stimmt auffallend, auf die simpelsten Lösungen kommt man zuletzt ;-)
Diese Vorgehensweise ( STRG-C, STRG-V ) ist doch älter als
Methusalem. Und ...
Post by Ulrich F. Heidenreich
Nuja. Ich hatte halt nach einer DOS-Lösung gesucht, weil
mir Windows da hoffnungslos zu kompliziert schien.
...hättest du gleich nach einer Windows Variante gefragt,
wäre obiges meine erste Antwort gewesen. Aber das würde
dann nicht zum Windows Bashing passen, gelle ;)

PS.2x QUELLE1 war tatsächlich ein Vertippser.

Aber wenn man xcopz durch copy ersetzt, dann würde es
genau tun, was du willst.
--
ryl: G'Kar
Ulrich F. Heidenreich
2011-08-27 08:24:31 UTC
Permalink
Post by Christian Potzinger
Post by Christoph Sternberg
Stimmt auffallend, auf die simpelsten Lösungen kommt man zuletzt ;-)
Diese Vorgehensweise ( STRG-C, STRG-V ) ist doch älter als
Methusalem. Und ...
...hättest du gleich nach einer Windows Variante gefragt,
wäre obiges meine erste Antwort gewesen. Aber das würde
dann nicht zum Windows Bashing passen, gelle ;)
Quatsch. Siehe meine Entgegnung zu Christophs Beitrag: Ich rechnete
nicht damit, daß diesmal die Windows-Lösung trivialer als ein DOS-
Zweizeiler sein konnte.
Post by Christian Potzinger
Aber wenn man xcopz durch copy ersetzt, dann würde es
genau tun, was du willst.
Aber mir die Finger wundtippen. Was /manchmal/ gar keine schlechte Idee
ist, weil man sich das Tippen des ~100-Zeilers ja auch per Programm
abnehmen lassen kann. So habe ich hier - eher am Rande - ein kleines
Pascal-Programm, welches mir diese Batchdatei erzeugt:

SET date=27082011
SET revdate=082711
SET month=08
SET month1=8
SET year=11
SET day=27
SET yestermonth=08
SET yesteryear=2011
SET yesteryear2=11
SET yesterday=26
SET dayname=Samstag
SET xmasday=28
SET xmasmonth=3

Praktisch für ein DOS, welches die kryptische Syntax eines CMD.EXE -
und der User wiederum jene - nicht beherrscht.

CU!
Ulrich
--
In 3 Monaten und 28 Tagen ist Weihnachten
Programme, soviel ihr wollt; Preise, die ihr selbst bestimmt:
Schaut einfach mal auf ftp://warez.invalid.de rein
Stellt euch vor, es ist Samstag und keiner geht hin!
Ulrich F. Heidenreich
2011-08-24 09:01:36 UTC
Permalink
Post by Christoph Sternberg
Post by Ulrich F. Heidenreich
Was genau nicht geschehen soll, sondern es sollen
die avis aus allen Quellverzeichnissen in einem einzigen Zielverzeichnis
Z:\ziel\ "eingesammelt" werden.
Das geht AFAIK mit xcopy nicht.
Da war ich mir nun mal nicht sicher, ob ich nur die Möglichkeit
vergessen habe oder es sie nie gab. Früher mit DRDOS hätte man wohl noch
mit der @-Funktionalität arbeiten können, dessen (X)COPY konnte iirc mit
DIR /S erzeugte Filelisten als Argumente des (X)COPY hernehmen. Aber
auch das ist wieder zu lange her ...
Post by Christoph Sternberg
Trick 17: Packer Deiner Wahl, ohne Pfadstruktur packen lassen und danach
wieder auspacken.
Eigentlich[TM] ein Gute Idee[TM]. Allerdings bei nicht gerade kleinen
AVIs auch nicht gerade performant ...

CU!
Ulrich
--
So versendet Amazon Festplatten:
<http://invalid.de/AmazonHDD.jpg>
<http://invalid.de/flach.jpg>
Herbert Kleebauer
2011-08-24 10:13:12 UTC
Permalink
Post by Ulrich F. Heidenreich
Post by Christoph Sternberg
Post by Ulrich F. Heidenreich
Was genau nicht geschehen soll, sondern es sollen
die avis aus allen Quellverzeichnissen in einem einzigen Zielverzeichnis
Z:\ziel\ "eingesammelt" werden.
Trick 17: Packer Deiner Wahl, ohne Pfadstruktur packen lassen und danach
wieder auspacken.
Eigentlich[TM] ein Gute Idee[TM]. Allerdings bei nicht gerade kleinen
AVIs auch nicht gerade performant ...
Zu Win98 Zeiten habe ich dazu eine Sammlung kleiner Hilfsprogramme
benutzt. Leider laufen diese unter 64 Bit Windows nicht mehr, daher
völlig ungetestet:

@echo off
echo ***@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>edl.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>edl.com
echo ?@}I{uNWEF~***@KMuHaEFGKYGSavh@{HM?cGOuGGwHm?z>>edl.com
echo CgisGGH`***@hRgco{W?***@N?]gBgoG}G?X_SgONks?GN`LBgDu}>>edl.com
echo G?I_DgGNoG?***@jgLiuuroD@?FHoGpBBDcB?1?pIoGxaEGybECt}ExvHmEA>>edl.com
echo AoF?DO~yanxGWap?@?lpZrH~sa`LyNHKqDGwQVTNG`CoECICtdL{D?{esL>>edl.com
echo ysICu_{***@sGxECHt~***@rgNHYq`EE{S~{HqegC{***@CE{HQ}@ExuGtPmB>>edl.com
echo BwjFCs?osqs?}n`LKLj?o{}HwJvCrpGyECt~~1}HGGHGy`G{}COuJaxLGS>>edl.com
echo i}BWuNC_FE{sGQEGFAPqGSEGNAcQNJwLECuQsa{Oe~CK~GQqGSeGSEFbCT>>edl.com
echo G?QEFbBgGGH1jnjBrz?JAcqo~O~?lJgvxs~CspajF{oFEBHijnjBrz?JAc>>edl.com
echo vx~O~?QJLqos~CspFjN{***@ComJcIpGy@ojZN{mJQujG{{]JQJB>>edl.com
echo GcCrmCJbjbGy]CFrj~GQEGjBSo_KVBxVkSfCA?***@NJBHmCrnEp1JYjxCo>>edl.com
echo I[r`{BFCHtdC}***@ZgB@WgB}fj~***@NgB~]hvsb{Os{{Q{msDOs>>edl.com
echo ycsk{SK{PQ{TsHVsQdsq{Sj{]ACCNWl{~BXCNW_K~BxVkSfCA?***@N}W@{>>edl.com
echo =sIfjBH}G}H}NK}NNguM@[***@mzDGCCrmCJFuhCrmC{@jJSN?`G}>>edl.com
echo EC{***@Ptcc?AyAFZp{GQEGjBKpEFDNIGQq=jBktx{SAzDgsjGKtl{SCzDg>>edl.com
echo jjGKtc{SEzDgajGKtG{SGzDgXjGKtL{SIzDgOjGKtR{SKzDgFjGKtX{S?z>>edl.com
echo MgFIGG?***@FIE?EgF}ThzoEuRN~CK}xDqgLoqo?t_ogIK?h?{JU=fGMuG>>edl.com
echo Ouz_FrGCsCyOjEEsjwr~EvPK~GypCt~Fy}HQ}HGGxG{pERNG]GxPa_BfsG>>edl.com
echo UaUy?***@xGGJH?w``LRaDBBobc?W?a_W?G_0x>>edl.com

dir /b /s Q:\quelle\*.avi |edl "" "copy $#0 Z:\ziel\" >_.bat

:: _.bat ueberpruefen und falls ok ausfuehren.
:: call _.bat
del _.bat
del edl.com


:: usage: edl "string1" "string2" <infile >outfile
:: replaces any non empty line in infile by string2
:: (a line is non empty if it contains at least one
:: character greater 0x20) and writes it to outfile.
::
:: Any character in string1 separates words
::
:: string2 can contain:
:: $00-$ff : hexbytes
:: $:abcd : input line [ab:cd] ab,cd hex values
:: $#0 : complete input line
:: $#n (n=1..9) : 1.- 9. word of input line
:: $#c (c=a..z) : 10.-35. word of input line
:: $l : line till first separator char
:: $L : line till last separator char
:: $r : line after first separator char
:: $R : line after last separator char
:: $+ : increment number before $+
:: $- : decrement number before $-
:: $tY : year (upper 2 digits)
:: $ty : year (lower 2 digits)
:: $tm : month
:: $td : day
:: $tH : hour
:: $tM : minute
:: $tS : second
::
:: instead of $ you can also use @, then any % is doubled
Martin Freitag
2011-08-23 22:16:26 UTC
Permalink
Post by Ulrich F. Heidenreich
Dzien' dobry!
Sollte mich langsam mein Alzheimer soweit eingeholt haben, daß manchen
von euch meine Frage trollig erscheint, dann ignoriert mich bitte. An
den Rest der Gemeinde die Dumme(?) Frage: Wie kopiere ich unter DOS
Dateien mehrerer Unterverzeichnisse in ein Zielverzeichnis?
Gegeben sei Q:\quelle\uvz1\, Q:\quelle\uvz2\, ... Q:\quelle\uvzn-1\,
Q:\quelle\uvzn\. Daraus sollen alle *.avi nach Z:\ziel\
Ein zunächst naheliegendes "XCOPY Q:\quelle\*.avi /s Z:\ziel" macht
da freilich Fuzzak, weil es die Unterverzeichnisstruktur von Q:\quelle
in Z:\ziel abbildet. Was genau nicht geschehen soll, sondern es sollen
die avis aus allen Quellverzeichnissen in einem einzigen Zielverzeichnis
Z:\ziel\ "eingesammelt" werden.
Jemand ne Idee?
Als batch im Verzeichnis Q:\Quelle ausgeführt z.B.:

@echo off
for /d %%G in ("*") DO (
copy "%%G\*.avi" "*.avi" )

Das holt alle AVIs eine Verzeichnisebene höher. Das Zielverzeichnis (und
ggf. auch die Quelle) als Parameter einzurichten, den du dann beim
Aufruf der Batch mit übergibst, überlass ich dir, das ist ja dann nur
noch Spielkram. ;-)
Kannst auch move verwenden, wenn du magst.

Falls du zuuufällig die AVIs auch gerne entsprechend ihrem Ordnernamen
umbenennen willst, sähe das folgendermaßen aus:

@echo off
for /d %%G in ("*") DO (
ren "%%G\*.avi" "%%G.avi"
copy "%%G\*.avi" "*.avi" )

Gruß
Martin
--
() ascii ribbon campaign - against html e-mail
/\ www.asciiribbon.org - http://www.asciiribbon.org/index-de.html
Christoph Sternberg
2011-08-24 06:33:06 UTC
Permalink
Post by Martin Freitag
@echo off
for /d %%G in ("*") DO (
copy "%%G\*.avi" "*.avi" )
Mit "for" zu arbeiten wäre jetzt auch meine nächste Idee gewesen, aber
abgesehen davon, dass hier neben /D noch /R zum Einsatz kommen müsste, gibt
es diese for-Optionen auf der gewünschten Zielplattform nicht ;-)

Christoph Sternberg */\
Ulrich F. Heidenreich
2011-08-24 08:51:14 UTC
Permalink
for /d %%G in ("*") DO (copy "%%G\*.avi" "*.avi" )
Syntaxfehler.

CU!
Ulrich
--
So versendet Amazon Festplatten:
<http://invalid.de/AmazonHDD.jpg>
<http://invalid.de/flach.jpg>
Christoph Sternberg
2011-08-24 09:13:13 UTC
Permalink
Post by Ulrich F. Heidenreich
Syntaxfehler.
Ebent, siehe mein Posting dazu ;)

Christoph Sternberg */\
Martin Freitag
2011-08-24 12:19:29 UTC
Permalink
Post by Christoph Sternberg
Post by Ulrich F. Heidenreich
Syntaxfehler.
Ebent, siehe mein Posting dazu ;)
Tjo, mein Fehler, zuletzt verwendet auf Windows2000 als ältestem Win,
das war schon wieder zu mächtig. :-/
Gruß

Martin
--
() ascii ribbon campaign - against html e-mail
/\ www.asciiribbon.org - http://www.asciiribbon.org/index-de.html
Uwe Sieber
2011-08-24 09:38:33 UTC
Permalink
Post by Ulrich F. Heidenreich
Dzien' dobry!
Sollte mich langsam mein Alzheimer soweit eingeholt haben, daß manchen
von euch meine Frage trollig erscheint, dann ignoriert mich bitte. An
den Rest der Gemeinde die Dumme(?) Frage: Wie kopiere ich unter DOS
Dateien mehrerer Unterverzeichnisse in ein Zielverzeichnis?
Gegeben sei Q:\quelle\uvz1\, Q:\quelle\uvz2\, ... Q:\quelle\uvzn-1\,
Q:\quelle\uvzn\. Daraus sollen alle *.avi nach Z:\ziel\
Ein zunächst naheliegendes "XCOPY Q:\quelle\*.avi /s Z:\ziel" macht
da freilich Fuzzak, weil es die Unterverzeichnisstruktur von Q:\quelle
in Z:\ziel abbildet. Was genau nicht geschehen soll, sondern es sollen
die avis aus allen Quellverzeichnissen in einem einzigen Zielverzeichnis
Z:\ziel\ "eingesammelt" werden.
Jemand ne Idee?
"DOS" bedeutet immer noch die unterm Win9x liegende "Shell".
Mit Bordmitteln kenne ich keine Möglichkeit, deshalb
hatte ich mir vor Jahren mal ein Tool dafür geschrieben.
Damals noch mit VB5, habs eben mal mit VB6 kompiliert -
sollte somit einfach gehen:
http://www.uwe-sieber.de/files/flattendir.zip

Einziger Pflichparameter ist ein !, damit wird dann das
aktuelle Verzeichniss flach gemacht.


Gruß Uwe
B.Dieke
2011-12-28 13:13:00 UTC
Permalink
Sorry für die späte Antwort

UFH>Dzien' dobry!
UFH>
UFH>Sollte mich langsam mein Alzheimer soweit eingeholt haben, daß manchen
UFH>von euch meine Frage trollig erscheint, dann ignoriert mich bitte. An
UFH>den Rest der Gemeinde die Dumme(?) Frage: Wie kopiere ich unter DOS
UFH>Dateien mehrerer Unterverzeichnisse in ein Zielverzeichnis?
UFH>
UFH>Gegeben sei Q:\quelle\uvz1\, Q:\quelle\uvz2\, ... Q:\quelle\uvzn-1\,
UFH>Q:\quelle\uvzn\. Daraus sollen alle *.avi nach Z:\ziel\
UFH>
UFH>Ein zunächst naheliegendes "XCOPY Q:\quelle\*.avi /s Z:\ziel" macht
UFH>da freilich Fuzzak, weil es die Unterverzeichnisstruktur von Q:\quelle
UFH>in Z:\ziel abbildet. Was genau nicht geschehen soll, sondern es sollen
UFH>die avis aus allen Quellverzeichnissen in einem einzigen
UFH>Zielverzeichnis Z:\ziel\ "eingesammelt" werden.
UFH>
UFH>Jemand ne Idee?
UFH>"DOS" bedeutet immer noch die unterm Win9x liegende "Shell".


hab ich,

mit einem Packer geht es prima, hier am Bsp. rar

--- alle files liegen in den Unterverz. -nach- q:\QUELLE
rar a -r Z:\Ziel\ziel.rar q:\QUELLE\*.avi >nul
rar e Z:\ZIEL\ziel.rar Z:\ZIEL >nul
del Z:\ZIEL\ziel.rar


um die Sache zu beschleunigen könnte man die Kompression noch ausschalten

Hoffe geholfen zu haben

bye
... Benny

Lesen Sie weiter auf narkive:
Loading...