esg-admin-is
Goto Top

Batchdatei - Ziel Ordner aktueller Monat

Hallo,

ich habe lokal auf einem Computer einige Dateien, die täglich mittels einer Batchdatei auf den Server kopiert werden. Wie kann ich es machen, dass die Daten nicht immer in den gleichen Ordner kopiert werden, sondern in den Ordner des aktuellen Monats.

Gibt es eine Variable für den aktuellen Monat?


z.b.: xcopy c:\Test s:\ziel\Monat


Danke Gruß Christoph

Content-ID: 6671

Url: https://administrator.de/contentid/6671

Ausgedruckt am: 17.11.2024 um 19:11 Uhr

Lord-Helmi
Lord-Helmi 09.02.2005 um 12:47:00 Uhr
Goto Top
Hallo,

du kannst mit einer for-Schleife den Monat aus dem Datum auslesen. In einer Batchdatei könnte das ganze so aussehen:

@for /F "tokens=1,2,3,4 delims=. " %%a in ('date /t') do set sichdate=%%c

Der Monat wird in die Variable sichdate geschreiben. Mit dieser Variablen kannst du dann in deiner Batchdatei weiter arbeiten, z.B.:

xcopy c:\Test s:\ziel\%sichdate%

Gruß
Michael
esg-admin-is
esg-admin-is 09.02.2005 um 13:49:04 Uhr
Goto Top
Hallo Lord_Helmi,

danke für deine schnelle Antwort habe es ausprobiert und es geht so weit, aber zei kleine Sachen hätte ich noch, vielleicht ist das ja auch möglich?

Es müsste doch irgendwie gehen, dass er vor dem kopieren prüft, ob der ordner des Monats schon vorhanden ist, und wenn nicht, dass er diesen erstellt? Das müsste doch mit einer If-Bedingung gehen?

Kann mit einer for-Schleife doch auch das Jahr raus filtern oder, wie schaut das aus?

Danke schon mal...

Gruß Christoph

P.S.: Arbeite eigentlich recht wenig mit Batch-Dateien und habe deswegen nicht so viel wissen zu diesem Thema face-smile
Atti58
Atti58 09.02.2005 um 14:07:56 Uhr
Goto Top
... soweit ich sehe, gibt diese Befehlszeile schon das Jahr aus face-wink ...

@for /F "tokens=1,2,3,4 delims=. " %%a in ('date /t') do set sichdate=%%c_%%b

if not exist %sichdate% mkdir %sichdate%

... 2005_02 wegen der besseren Sortierbarkeit face-wink ...

Gruß

Atti
Lord-Helmi
Lord-Helmi 09.02.2005 um 14:09:54 Uhr
Goto Top
Hallo,

mit einer if-Abfrage kannst du auch nachsehen, ob ein Ordner schon vorhanden ist, z.B.:

if exist c:\testord goto punkt1
md c:\testord
:punkt1

Bei den Ordnernamen kannst du auch mit Variablen arbeiten (z.B. dem ermittelten Monat). Mit der for-Schleife zerlegst du die Ausgabe, die der Befehl date /t erzeugt, in einzelne Bestandteile. Unter delims legst du fest, welche Trennzeichen die einzelnen Bereiche trennen sollen und mit tokens sagst du ihm, wie viele / welche Bereiche du brauchst. Der erste Token erhält dann %%a, der zweite %%b usw. Wenn du die Jahreszahl mit in die Namensvergabe der Ordner einbinden willst, könnte das in etwa so aussehen:

@for /F "tokens=1,2,3,4 delims=. " %%a in ('date /t') do set sichdate=%%d_%%c

Gruß
Michael

@for /F "tokens=1,2,3,4 delims=. " %%a in ('date /t') do set sichdate=%%d_%%c