Tages-Ordner mit gpx-Dateien aus Sommelordner mit xcopy kopieren(separieren)
Hi,
Auf diese sehr interessante Seite bin ich durch meine Suchanfrage gestoßen.
Jährlich lege ich einen Sammelordner an. z.B. 2017 WoMo Sommer
Darin werden Tagesordner angelegt. 2017-06-21 +"Ortname" ca 60 Ordner
In diese Tagesordner kommen jeweils 2 Ordner PRG
DNG
Und die aufgezeichneten Radtouren *.gpx
Nun möchte ich die Tagesordner mit den *.gpx-Dateien in einen anderen Sammelordner kopieren.
mit meiner meine Null Ahnung habe ich bisher noch keinen Versuch hingekriegt der was anderes als 0 Dateien kopiert sagt.
Grüße Ulrich
Auf diese sehr interessante Seite bin ich durch meine Suchanfrage gestoßen.
Jährlich lege ich einen Sammelordner an. z.B. 2017 WoMo Sommer
Darin werden Tagesordner angelegt. 2017-06-21 +"Ortname" ca 60 Ordner
In diese Tagesordner kommen jeweils 2 Ordner PRG
DNG
Und die aufgezeichneten Radtouren *.gpx
Nun möchte ich die Tagesordner mit den *.gpx-Dateien in einen anderen Sammelordner kopieren.
mit meiner meine Null Ahnung habe ich bisher noch keinen Versuch hingekriegt der was anderes als 0 Dateien kopiert sagt.
Grüße Ulrich
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 371446
Url: https://administrator.de/contentid/371446
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
18 Kommentare
Neuester Kommentar
Hallo Ulrich,
teste mal folgendes:
Die Angaben in den Zeilen 3 und 4 musst Du für Dich passend setzen.
Grüße
Friemler
[EDIT]
Änderung: Die Verzeichnisse
[/EDIT]
teste mal folgendes:
@echo off & setlocal
set "BaseDir=Verzeichnis mit den jährlichen Sammelordnern"
set "DestDir=Zielverzeichnis"
for /d %%a in ("%BaseDir%\*.*") do (
for /d %%b in ("%%~a\*.*") do (
xcopy /iqy "%%~b\*.*" "%DestDir%\%%~nxb" > NUL
)
)
Die Angaben in den Zeilen 3 und 4 musst Du für Dich passend setzen.
Grüße
Friemler
[EDIT]
Änderung: Die Verzeichnisse
PRG
und DNG
werden nicht mehr mit kopiert.[/EDIT]
Oder als Powershell Einzeiler:
Gruß m.
gci 'D:\Basedir' -File -FIlter *.gpx -Recurse | copy-item -destination 'D:\Sammelordner' -Force
Moin @135950,
ich glaube, da hast Du die Anforderung des TO nicht so ganz erfasst.
Unterhalb des Basisverzeichnisses gibt es weitere Ordner und erst in denen liegen die
Der TO möchte
Heißt also, dass nicht nur die
Ob die sich ebenfalls darin befindlichen Verzeichnisse
Und mal nebenbei: Den entscheidenden Code in Batchscript kann man sehr oft auch in eine Zeile schreiben. Aber so geschriebener Code ist sehr schlecht änderbar und schwer zu verstehen, und das gilt auch für PowerShell-Einzeiler.
Grüße
Friemler
ich glaube, da hast Du die Anforderung des TO nicht so ganz erfasst.
Unterhalb des Basisverzeichnisses gibt es weitere Ordner und erst in denen liegen die
*.gpx
Dateien.Der TO möchte
Heißt also, dass nicht nur die
*.gpx
Dateien kopiert werden sollen, sondern das Verzeichnis, in dem sie sich befinden.Ob die sich ebenfalls darin befindlichen Verzeichnisse
PRG
und DNG
auch kopiert werden sollen, lässt sich aus der Formulierung des TO nicht zweifelsfrei ableiten, mein Code macht das auf jeden Fall.Und mal nebenbei: Den entscheidenden Code in Batchscript kann man sehr oft auch in eine Zeile schreiben. Aber so geschriebener Code ist sehr schlecht änderbar und schwer zu verstehen, und das gilt auch für PowerShell-Einzeiler.
Grüße
Friemler
Ob die sich ebenfalls darin befindlichen Verzeichnisse PRG und DNG auch kopiert werden sollen, lässt sich aus der Formulierung des TO nicht zweifelsfrei ableiten, mein Code macht das auf jeden Fall.
Kann der TO ja entscheiden was er nun tatsächlich braucht, wenn er es nicht eindeutig hinterlegt.Ist aber nur ein Fingerstreich wenn das so sein soll
gci 'D:\Basedir' -File -FIlter *.gpx -Recurse | %{
$ordner = "D:\Sammelordner\$($_.Directory.Parent.Name)"
if (!(Test-Path $ordner){md $ordner -Force | out-null}
copy-item -destination $ordner -Force
}
Den entscheidenden Code in Batchscript kann man sehr oft auch in eine Zeile schreiben. Aber so geschriebener Code ist sehr schlecht änderbar und schwer zu verstehen
Bei Batch ja, und das gilt auch für PowerShell-Einzeiler.
Nicht zwingend, sieht man ja oben, kurz knackig, verständlich, im Gegensatz zum Batchkrypto aus den 70ern , jeder wie er's mag, aber das ist hier ja überhaupt nicht das Thema!
Hallo Ulrich,
ich habe mein Script oben angepasst, damit die beiden Ordner
BTW: Sollten die Pfade nicht folgendermaßen gesetzt werden?
Anführungszeichen mitten in den Namen einbauen führt zu Fehlern.
Grüße
Friemler
ich habe mein Script oben angepasst, damit die beiden Ordner
PRG
und DNG
nicht mehr mit kopiert werden.BTW: Sollten die Pfade nicht folgendermaßen gesetzt werden?
set "BaseDir=E:\Panasonic\2017\2017 WoMo Sommer"
set "DestDir=E:\Panasonic\2017\2017 Radtouren"
Grüße
Friemler
Hallo Ulrich,
Du vermischst hier die beiden Script-Sprachen Batch und PowerShell in einer Datei, so wird das nichts. Entweder Du entscheidest Dich für die Lösung von dem bereits schon wieder abgemeldeten marathon (PowerShell) oder für meine Lösung (Batch).
Den PowerShell-Code musst Du mit der Dateierweiterung
Dann kopiere meinen Code bitte aber auch so, wie ich ihn gepostet habe und ergänze nur die beiden Pfade (in Deinem letzten Kommentar fehlen schon wieder die Anführungszeichen um die beiden
Grüße
Friemler
Du vermischst hier die beiden Script-Sprachen Batch und PowerShell in einer Datei, so wird das nichts. Entweder Du entscheidest Dich für die Lösung von dem bereits schon wieder abgemeldeten marathon (PowerShell) oder für meine Lösung (Batch).
Den PowerShell-Code musst Du mit der Dateierweiterung
ps1
speichern, meinen Batch-Code mit der Dateierweiterung cmd
. PowerShell-Scripte lassen sich aber aus Sicherheitsgründen nicht einfach per Doppelklick öffnen, wenn auf Deinem System nicht spezielle Einstellungen vorgenommen wurden. Deshalb und auch weil marathon von neuen Postings in diesem Thread sowieso nichts mehr mitbekommt, würde ich Dir empfehlen meine Batch-Lösung zu verwenden.Dann kopiere meinen Code bitte aber auch so, wie ich ihn gepostet habe und ergänze nur die beiden Pfade (in Deinem letzten Kommentar fehlen schon wieder die Anführungszeichen um die beiden
SET
-Befehle, die sind wichtig!!). In den Boxen mit dem Code gibt es dazu oben rechts einen Link mit dem Text Quelltext
. Ein Klick darauf öffnet ein neues Browser-Fenster, wo Du den Code per STRG+A markieren und per STRG+C kopieren kannst. Mit STRG+V im Fenster eines Texteditors landet er dann dort.Grüße
Friemler
Hallo Ulrich,
ich hatte mein Script aktualisiert, als Du klargestellt hast, dass Du die beiden Verzeichniss
Das Originalverzeichnis sollte eigentlich nicht gelöscht werden, dafür ist auch gar kein Code in dem Script vorhanden.
Wenn nach Deinem Test mit dem aktualisierten Script immer noch Fehler auftreten, poste bitte den Code, den Du verwendet hast, in Code-Tags!! Wie das geht steht hier.
Außerdem öffne bitte eine Kommandozeile/DOS-Fenster, navigiere in Dein Basisverzeichnis und führe dort das folgende Kommando aus:
Dadurch wird auf Deinem Desktop eine Datei namens
Grüße
Friemler
ich hatte mein Script aktualisiert, als Du klargestellt hast, dass Du die beiden Verzeichniss
PRG
und DNG
in der Kopie nicht benötigst. Teste bitte nochmals mit dem aktualisierten Script.Das Originalverzeichnis sollte eigentlich nicht gelöscht werden, dafür ist auch gar kein Code in dem Script vorhanden.
Wenn nach Deinem Test mit dem aktualisierten Script immer noch Fehler auftreten, poste bitte den Code, den Du verwendet hast, in Code-Tags!! Wie das geht steht hier.
Außerdem öffne bitte eine Kommandozeile/DOS-Fenster, navigiere in Dein Basisverzeichnis und führe dort das folgende Kommando aus:
tree /a /f > "%UserProfile%\Desktop\VerzeichnisStruktur.txt"
VerzeichnisStruktur.txt
erstellt. Poste bitte den Inhalt dieser Datei ebenfalls in Code-Tags.Grüße
Friemler
Hallo Ulrich,
zunächst mal: Vergiss den von marathon geposteten Code, das ist PowerShell-Script und wird vom Interpreter für Batch-Script nicht verstanden. Einen deutschen Koch nach einem in chinesisch verfassten Rezept kochen zu lassen wird auch zu keinem Ergebnis führen sondern höchstens zu etwas ungenießbarem. Also alles ab Zeile 15 ENTSORGEN!!
Da der Code bei mir hier funktioniert wenn ich ihn auf eine Verzeichnisstruktur anwende, die ich Deinen Angaben im Eröffnungsposting folgend nachgestellt habe, kann die Fehlfunktion nicht am Code selbst liegen, sondern nur daran, dass Deine reale Verzeichnisstruktur anders aussieht, als ich aus Deinen Angaben herauslesen konnte oder Du ein falsches Basisverzeichnis setzt. Deshalb hatte ich Dich um die Ausführung des
Ich zeige Dir hier mal, wie meine Verzeichnisstruktur aussieht (erzeugt mit dem Kommando
Wenn ich darauf den folgenden Code anwende
sieht das Ergebnis so aus:
Vergleiche jetzt bitte mal die Verzeichnisstruktur bei Dir vor Ort mit der ganz oben gezeigten und überprüfe, wo der Unterschied liegt. Ich persönlich glaube, dass Du für
Ach ja: ITler "liiieben" Fehlermeldungen á la "Funktioniert nicht". Bitte schildere ggf. etwas genauer was passiert bzw. nicht passiert und ob beim Scriptlauf irgendwelche Fehlermeldungen angezeigt werden.
Grüße
Friemler
zunächst mal: Vergiss den von marathon geposteten Code, das ist PowerShell-Script und wird vom Interpreter für Batch-Script nicht verstanden. Einen deutschen Koch nach einem in chinesisch verfassten Rezept kochen zu lassen wird auch zu keinem Ergebnis führen sondern höchstens zu etwas ungenießbarem. Also alles ab Zeile 15 ENTSORGEN!!
Da der Code bei mir hier funktioniert wenn ich ihn auf eine Verzeichnisstruktur anwende, die ich Deinen Angaben im Eröffnungsposting folgend nachgestellt habe, kann die Fehlfunktion nicht am Code selbst liegen, sondern nur daran, dass Deine reale Verzeichnisstruktur anders aussieht, als ich aus Deinen Angaben herauslesen konnte oder Du ein falsches Basisverzeichnis setzt. Deshalb hatte ich Dich um die Ausführung des
TREE
-Kommandos gebeten...Ich zeige Dir hier mal, wie meine Verzeichnisstruktur aussieht (erzeugt mit dem Kommando
TREE /a /f
):E:.
|
\---Panasonic
+---2017 WoMo Sommer
| +---2017-06-21 Ortsname
| | | NichtKopieren.txt
| | | Test1.gpx
| | | Test2.gpx
| | | Test3.gpx
| | |
| | +---DNG
| | | NichtKopieren.txt
| | |
| | \---PRG
| | NichtKopieren.txt
| |
| \---2017-06-28 Ortsname
| | NichtKopieren.txt
| | Test1.gpx
| | Test2.gpx
| | Test3.gpx
| |
| +---DNG
| | NichtKopieren.txt
| |
| \---PRG
| NichtKopieren.txt
|
\---2018 WoMo Sommer
+---2018-06-21 Ortsname
| | NichtKopieren.txt
| | Test1.gpx
| | Test2.gpx
| | Test3.gpx
| |
| +---DNG
| | NichtKopieren.txt
| |
| \---PRG
| NichtKopieren.txt
|
\---2018-06-28 Ortsname
| NichtKopieren.txt
| Test1.gpx
| Test2.gpx
| Test3.gpx
|
+---DNG
| NichtKopieren.txt
|
\---PRG
NichtKopieren.txt
Wenn ich darauf den folgenden Code anwende
@echo off & setlocal
set "BaseDir=E:\Panasonic"
set "DestDir=E:\Ziel"
for /d %%a in ("%BaseDir%\*.*") do (
for /d %%b in ("%%~a\*.*") do (
xcopy /iqy "%%~b\*.gpx" "%DestDir%\%%~nxb" > NUL
)
)
sieht das Ergebnis so aus:
E:.
|
\---Ziel
+---2017-06-21 Ortsname
| Test1.gpx
| Test2.gpx
| Test3.gpx
|
+---2017-06-28 Ortsname
| Test1.gpx
| Test2.gpx
| Test3.gpx
|
+---2018-06-21 Ortsname
| Test1.gpx
| Test2.gpx
| Test3.gpx
|
\---2018-06-28 Ortsname
Test1.gpx
Test2.gpx
Test3.gpx
Vergleiche jetzt bitte mal die Verzeichnisstruktur bei Dir vor Ort mit der ganz oben gezeigten und überprüfe, wo der Unterschied liegt. Ich persönlich glaube, dass Du für
BaseDir
ein falsches Verzeichnis setzt, nämlich zwei Ebenen zu tief.Ach ja: ITler "liiieben" Fehlermeldungen á la "Funktioniert nicht". Bitte schildere ggf. etwas genauer was passiert bzw. nicht passiert und ob beim Scriptlauf irgendwelche Fehlermeldungen angezeigt werden.
Grüße
Friemler
Hallo Ulrich,
Du kommst ja ganz schön rum, und das alles per Fahrrad, in Deinem Alter - Respekt. In 30 Jahren bin ich wahrscheinlich so kurzsichtig von der Bildschirmarbeit, dass ich mich besser nicht mehr auf einen Drahtesel setze, mal ganz abgesehen von der mangelnden Fitness .
Zurück zu Deinem Problem:
Es ist so wie ich gedacht habe: Deine Angaben für das Basisverzeichnis (
Setze
Übrigens ist Deine Verzeichnisstruktur etwas unregelmäßig. Das Script wird z.B. das Verzeichnis
nicht erwischen, da hier die Anzahl der Verzeichnisebenen unterhalb des Basisverzeichnisses nicht stimmt. Da musst Du leider erstmal von Hand aufräumen bzw. im Nachgang die nicht kopierten Verzeichnisse händisch kopieren.
Die GPX-Dateien in
fallen natürlich auch aus dem Rahmen und werden deshalb nicht kopiert.
Grüße
Friemler
Du kommst ja ganz schön rum, und das alles per Fahrrad, in Deinem Alter - Respekt. In 30 Jahren bin ich wahrscheinlich so kurzsichtig von der Bildschirmarbeit, dass ich mich besser nicht mehr auf einen Drahtesel setze, mal ganz abgesehen von der mangelnden Fitness .
Zurück zu Deinem Problem:
Es ist so wie ich gedacht habe: Deine Angaben für das Basisverzeichnis (
BaseDir
) und das Zielverzeichnis (DestDir
, das ist übrigens kein Rechtschreibfehler sondern die Abkürzung für engl. Destination Directory = Zielverzeichnis) passen nicht zum Script.Setze
BaseDir
folgendermaßen:set "BaseDir=E:\panasonic\2017"
DestDir
musst Du auf ein Verzeichnis setzen, das sich außerhalb der Verzeichnisstruktur befindet, die Du verarbeiten möchtest. Das Script versucht sonst, das Zielverzeichnis ebenfalls zu verarbeiten, und das wird schief gehen. Setze DestDir
z.B. so:set "DestDir=E:\GPX-Extrakt"
Übrigens ist Deine Verzeichnisstruktur etwas unregelmäßig. Das Script wird z.B. das Verzeichnis
E:\panasonic\2017\2017 WoMo Sommer\2017-05-30 Ginsheim NATO-Rampe\2017-06-19 Hanau-Steinheim
nicht erwischen, da hier die Anzahl der Verzeichnisebenen unterhalb des Basisverzeichnisses nicht stimmt. Da musst Du leider erstmal von Hand aufräumen bzw. im Nachgang die nicht kopierten Verzeichnisse händisch kopieren.
Die GPX-Dateien in
E:\panasonic\2017\Radtouren, gepl
Grüße
Friemler
Hallo Ulrich,
freut mich, dass dann doch noch alles geklappt hat. Der Thread ist übrigens schon seit längerem als gelöst markiert.
Marathon- und Triathlon-Läufer - würde mir ja im Traum nicht einfallen! Ich halte es da lieber mit dem Wandern, gehen ist die natürliche Bewegungsform des Menschen, zig Kilometer rennen auf keinen Fall. Läufer mit kaputten Knien sind ja auch keine Seltenheit.
Grüße
Friemler
freut mich, dass dann doch noch alles geklappt hat. Der Thread ist übrigens schon seit längerem als gelöst markiert.
Marathon- und Triathlon-Läufer - würde mir ja im Traum nicht einfallen! Ich halte es da lieber mit dem Wandern, gehen ist die natürliche Bewegungsform des Menschen, zig Kilometer rennen auf keinen Fall. Läufer mit kaputten Knien sind ja auch keine Seltenheit.
Grüße
Friemler