XCOPY (o.ä.) mit variablem Quellverzeichnis?

WGz

Cadet 3rd Year
Registriert
Juni 2006
Beiträge
43
Hallo,

im Unterverzeichnis
C:\MSG\DWD\2006\11\21
befinden sich unter vielen anderen die Files fx401-*.tif
die nach C:\MSG\DWD\Karten\
mit XCOPY oder einem anderen Kopierprogramm
kopiert werden sollen.

Die Unterverzeichnisse ändern sich aber täglich
und monatlich (jährlich kann man von Hand ändern).

Wie lautet nun der Befehl für XCOPY, der sich
selbständig auf das jeweils heutige Datum
des Quellverzeichnisses einstellt.
Das Zielverzeichnis bleibt dabei dasselbe.

Dank für einen Hinweis,
Werner.
 
die variable %date% gibt dir das Datum im Format 21.11.2006 aus.

Das kann man dann bestimmt irgendwie weiterverarbeiten, damit das dann in so eine Ordnerstruktur passt.

mfg
 
luky37 schrieb:
die variable %date% gibt dir das Datum im Format 21.11.2006 aus.

Das kann man dann bestimmt irgendwie weiterverarbeiten,
damit das dann in so eine Ordnerstruktur passt.

"Irgendwie", ja wie? -- Es müsste doch auch möglich sein, dass man sich
in dem Verzeichnis befindet, in dem sich die zu sichernden Files befinden,
um die in ein Zielverzeichnis zu kopieren. Man müsste dann aus diesem
Verzeichnis heraus das Kopierprogramm (Batch) aufrufen können.

Es würde auch schon helfen, wenn man sich in dem Verzeichnis befindet,
<Suchen> anklickt, dann aber im Feld "Nach folgenden Dateien und
Ordnern suchen:" die Files schon drin stehen hätte, um sie dann von Hand
in das Zielverzeichnis zu kopieren. -- Das wäre dann nicht so elegant.

Werner.
 
Aufgabenstellung:
-----------------
Kopiere Dateien fx401-*.tif von C:\MSG\DWD\2006\11\21\ (bzw. allgemeiner C:\MSG\DWD\JJJJ\MM\DD) nach C:\MSG\DWD\Karten\ ,wobei der Pfadanteil JJJJ\MM\DD aus dem aktuellen Datum generiert werden soll.

Stufe 1
-------
Naiv leistet das der statische Ansatz...
XCOPY C:\MSG\DWD\2006\11\21\fx401-*.tif C:\MSG\DWD\Karten\

Also definieren wir ein paar lokale Variablen...

SET FromPath=C:\MSG\DWD\
SET FromVar=2006\11\21\
SET FromFile=fx401-*.tif

SET ToPath=C:\MSG\DWD\Karten\

Und schreiben die XCOPY-Zeile um...
XCOPY %FromPath%FromVar%FromFile %ToPath

Und da wir auf dieser Stufe etwas bzgl. lokalen Variablen lernen wollen, fassen wir die XCOPY-Parameter zusammen...

SET Quelle=%FromPath%%FromVar%%FromFile%
SET Ziel=%ToPath%

Damit erhalten wir die Exekutive...
XCOPY %Quelle% %Ziel%

Nachbetrachtung auf diesem Niveau: Wenn sich doch nur die Variable "FromVar" irgendwie anpassen liesse. Täglich "FromVar" editieren macht keine Arbeitserleichterung...


(Übergangs-) Stufe 2
--------------------
Man erinnere sich daran, daß man BATch-Dateien Parameter (durch Leerzeichen getrennt) zur lokalen Verwendung mitgeben kann, die dann als %1 %2 %3 (usw.) inhaltlich abrufbar sind.

Würde ich also einen BATch mit dem Inhalt...

SET FromVar=%1\%2\%3
echo FromVar=%FromVar%

...und den Parametern 2006 11 21 abrufen, hätte ich exakt die benötigte FromVar-Struktur von oben... Immerhin wäre damit die Aufgabenstellung per KommandoZeile erreicht.


Stufe 3:
--------
Parsing des "DATE /T" -Formates... mit dem Endeffekt einer geeigneten "FromVar" -Variable. Kann ich hier aus "DATE /T" die lokalen Variablen JJJJ, MM und TT gewinnen, kann ich sie auch geeignet zusammenfügen (Stufe-1-Lernen), sodass ein TÄGLICHES + automatisches "FromVar" entsteht.

For /F "Tokens=1,2" %%A In ('Date /T') Do (
For /F "Tokens=1-3 Delims=.-/" %%B In ("%%A") Do (
SET FromVar=%%D\%%C\%%B ) )

Den Erfolg zeigt....
echo FromVar = %FromVar%

Mit dem Geheimnis JJJJ=D (usw.) baut man sich DIE EXAKTE Aufgabenstellung zusammen.

Breche ich also hier ab. - Fragen beantworte ich gerne, falls Inhalte begriffen wurden. Ich hasse *Tuk Tuk* Komplettlösungen...

Zusammenfassung:
----------------
(1) SystemVariablen verstehen
(2) Parsing ausschlachten...

-Boy Nokumba-
_____________________________________

SO würde ich also anfangen...

@echo off

REM --- vordefinierte Variablen -----------------------------------------
REM Beachte: Verzeichnisse schliessen jeweils mit einem \ ab.

SET FromPath=C:\MSG\DWD\
SET FromVar=2006\11\21\
SET FromFile=fx401-*.tif

SET ToPath=C:\MSG\DWD\Karten\

REM ---------------------------------------------------------------------


REM --- Zusammenfassung relevanter Variablen

SET Quelle=%FromPath%%FromVar%%FromFile%
SET Ziel=%ToPath%

REM --- Test
rem ...


REM --- Hier wird kopiert
XCOPY %Quelle% %Ziel%
 
Hervorragend, danke!
Ich gehe an die Arbeit.

Werner.
 
Zurück
Oben