teleplangmbh
Goto Top

Ordner täglich wegkopieren und datum Anhängen

Hallo,

habe einiges Versucht aber es will nicht funktionieren..

In Ordner A werden jeden Tag dateien abgelegt. Bei batchaufruf soll ein neuer Ordner B angelegt und der Inhalt von A dort abgelegt und abschliessend aus A gelöscht werden.
Im Ordnernamen von B muss das Datum enthalten sein, also z.B. Rechnungen220408.

Danke!

Content-Key: 86138

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

Printed on: April 16, 2024 at 06:04 o'clock

Mitglied: 60730
60730 Apr 22, 2008 at 15:47:19 (UTC)
Goto Top
Hi,

geht ganz einfach - Ergebnis sollte das gleiche wie dein Ziel sein, -jedoch ändert die Batch den Namen des Rechnungsordners in Rechnungsordner-datum um und erstellt dann einen neuen leeren Rechnungsordner.
FOR /F "TOKENS=1,2*" %%A IN ('DATE/T') DO SET DATE=%%B  
move c:\rechnungen c:\rechnungen-%date%
md c:\rechnungen
Mitglied: 6741
6741 Apr 22, 2008 at 15:58:56 (UTC)
Goto Top
*

md c:\rechnung_%date%

move c:\rechnung\*.* c:\rechnung_%date%

*

geht, habs getestet ....

gruß

und das ist nur ein zweizeiler ...

diese batch um 22:00 und wech sind dies Dateien ...
Mitglied: 60730
60730 Apr 22, 2008 at 16:10:35 (UTC)
Goto Top
geht, habs getestet ....

und das ist nur ein zweizeiler ...

einzeller
md c:\rechnung_%date% |move c:\rechnung\*.* c:\rechnung_%date%

Leider haben sowohl der Ein als auch der Zweizeiler den fahlen Nachgeschmack, das der Ordner
c:\rechnung_Di
und in dem Ordner, von wo aus das Skript gestartet wird der Unterordner "22.04.2008" erstellt wird.

Dann doch lieber die eine Zeile mehr in Kauf nehmen.
Member: bastla
bastla Apr 22, 2008 at 16:23:35 (UTC)
Goto Top
Hallo TeleplanGmbH und willkommen im Forum!

Da Du uns nicht wissen lässt, auf welchem System der Batch laufen soll, eine Datumsauslesevariante (ob's diese Wort vorher schon gab? face-wink), die sowohl auf (dt) W2000 als auch ab XP funktioniert:
set "Jahr=%date:~-4%"  
set "Monat=%date:~-7,2%"  
set "Tag=%date:~-10,2%"  
Die einzelnen Bestandteile kannst Du nach Bedarf kombinieren. Um etwa vernünftig sortierbare Ordnernamen der Art
Rechnungen_2008-04-22
zu erzeugen, ginge das so:
set "Ordner=Rechnungen_%Jahr%-%Monat%-%Tag%"  
Den Rest haben ja bereits Timobeil und firewalldevil dargestellt - mit der Variablen %Ordner% sähe das dann so aus:
md "C:\%Ordner%"  
move "C:\Rechnung\*.*" "C:\%Ordner%\"  
Die vielen Anführungszeichen bei meinem Vorschlag sind rein vorbeugender Natur (falls sich irgendwo in einem Pfad oder Dateinamen Leerzeichen befinden sollten) ...

Grüße
bastla
Mitglied: 6741
6741 Apr 22, 2008 at 19:15:11 (UTC)
Goto Top
> geht, habs getestet ....

und das ist nur ein zweizeiler ...

einzeller
> md c:\rechnung_%date% |move
c:\rechnung\*.* c:\rechnung_%date%

Leider haben sowohl der Ein als auch der
Zweizeiler den fahlen Nachgeschmack, das der
Ordner
> c:\rechnung_Di
und in dem Ordner, von wo aus das Skript
gestartet wird der Unterordner
"22.04.2008" erstellt wird.

Dann doch lieber die eine Zeile mehr in Kauf
nehmen.



sorry, das verstehe ich nicht, warum soll ein Ordner dort erstellt werden??? Ist doch eindeutig, oder?

@bastla ... ja, an das Datum habe ich auch gedacht... danke für die Verbesserung!

gruß Gerald
Member: bastla
bastla Apr 22, 2008 at 19:23:41 (UTC)
Goto Top
@fwd

TimoBeil verwendet offensichtlich W2000 (NT wird's ja wohl doch nicht sein face-wink), wo das heutige Datum so angezeigt wird:
Di 22.04.2008
Folge: Der "md"-Befehl erzeugt tatsächlich die beiden Ordner "rechnung_Di" und "22.04.2008".

Um genau dieses Problem zu umgehen, verwende ich die oben unten dargestellte Schreibweise, mit der ich das Ganze "von hinten" aufrolle ...

Grüße
bastla
Member: TeleplanGmbH
TeleplanGmbH Apr 23, 2008 at 07:55:56 (UTC)
Goto Top
Hallo,

danke für die vielen Antworten:

Einfach den Ordner verschieben und einen neuen erstellen geht nicht wegen der Zugriffsrechte:
In den A Ordner darf jeder schrieben, aber am nächsten tag (nac hdem verschieben) nur noch bestimmte Personen.

Habe verschiedene Vorshcläge hier zusammengeführt zu folgendem Skript, das wunder bar funktioniert:
FOR /F "TOKENS=1,2*" %%A IN ('DATE/T') DO SET DATE=%%B  
md "c:\Ablage\Eingang_%date%"  
copy  "c:\Eingang\*.*" "c:\Ablage\Eingang_%date%"  
del /q "c:\Eingang\*.*"  
Ordnernamen sind natürlich fiktiv, der tatsächliche, lange Pfad bringt ja keinem was..

Also, vielen Dank - problem gelöst face-smile