koido1
Goto Top

Batch Sicherung der Dateien der letzten 18 Monate

Fachfrage

Ein Hallo in Runde,

ich habe eine Fachfrage und keine Ahnung ob es dafür überhaupt eine Lösung gibt.

Ich möchte alle Ordener/Verzeichnisse eines Laufwerks X auf ein Laufwerk Y kopieren.
Und jetzt käme mein Problem. Ich möchte, dass sobald ich die batch-Datei starte, dass alle Datein die auf dem Laufwerk X älter als 18 Monate sind auf das Laufwerk Y kopiert werden.

Wenn ich mit xcopy /d ein Datum definiere, kopiert er jedoch immer nur die Daten von diesem Zeitpunkt bis jetzt. Wie könnte ich vorgehen???

(Robocopy kann ich nicht verwenden)

Vielen Dank im voraus.
Kommentar vom Moderator Biber am Jul 27, 2009 um 17:39:06 Uhr
So, den Beitrag schließ ich jetzt aber ganz schnell.

Grüße
Biber

Content-Key: 120479

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

Printed on: April 19, 2024 at 14:04 o'clock

Member: empreality
empreality Jul 15, 2009 at 06:59:37 (UTC)
Goto Top
Das ginge in der Tat leicht mit Robocopy. Warum kannst du das nicht verwenden o.O
Mitglied: 60730
60730 Jul 15, 2009 at 07:02:02 (UTC)
Goto Top
Moin,

wenn es denn wirklich nicht via Robocopy laufen darf, dann ist "stricken" angesagt face-wink

Xcopy wäre schon mal ein guter Ansatz.

Schau dir mal den Schalter /exclude an - da kannst du auch eine Liste anfügen.

Nun wirds "komplex" - du mußt diese Liste (mit allen Dateien - die nicht älter als 18 Monate sind) vorher irgendwie erzeugen.

Da hätte ich zwar auch Ideen, die rel. sicher von einem der beiden Bs (aus diesem B Bereich) inspiriert sind -aber im Moment brennt bei uns die Hütte.

Datei Datum - sollte dein Suchansatz werden.

Gruß
Member: 2hard4you
2hard4you Jul 15, 2009 at 07:02:30 (UTC)
Goto Top
Moin,

Robocopy wäre allerdings schon der Idealkandidat face-wink

ansonsten move die jüngeren Dateien woanders hin, kopiere den Rest, und move die jüngeren Dateien zurück...

alternativ

kopiere alle und lösche die jüngeren danach

Gruß

24
Member: crashzero2000
crashzero2000 Jul 15, 2009, updated at Oct 18, 2012 at 16:38:45 (UTC)
Goto Top
Mitglied: 60730
60730 Jul 15, 2009, updated at Oct 18, 2012 at 16:38:45 (UTC)
Goto Top

Servus,

wobei - wenn der Grund - nicht Robocopy nutzen zu dürfen - um "sicher" zu sein, dass das Backup wirklich überall läuft - was eine Annahme meinerseits ist...

Dann wäre auch forfiles keine Alternative.

Warten wir das Feedback der bisherigen Beiträge ab.

Gruß
Member: Koido1
Koido1 Jul 15, 2009 at 11:29:52 (UTC)
Goto Top
Erst einmal danke an alle.

Hier ein paar Ergänzungen und sorry das ich nicht klarer zum Anfang war.
Das ganze soll in einer Firmenumgebung genutzt werden. Ich bin kein Admin, habe aber die "Erlaubnis" was Eigenes "produzieren" zu dürfen. Robocopy wurde genau mit der Begründung von >timobeil< abgelehnt.

Also bin ich auf xcopy angewiesen. Mit exclude kann ich doch keine Daten ausfiltern, oder etwa doch? Ich dachte bisher immer nur an das Herausfiltern für bestimmte Dateien, z.B. *doc oder *pdf.

@2hard4you

Jeden Tag werden auf dem Laufwerk viele Daten bewegt, so dass ein "ansonsten move die jüngeren Dateien woanders hin, kopiere den Rest, und move die jüngeren Dateien zurück..." wahrscheinlich ausfällt.

"kopiere alle und lösche die jüngeren danach"

Wäre eine Alternative, müsste aber auch in zwei Schritten passieren, also:

1. Kopiere alle die älter sind als 18 Monate
2. Move all die älter sind als 19 Monate

Hintergrund ist, dass die Archivablage (Y) im Gegensatz zum persönlichen Laufwerk (X) nicht täglich gesichert ist. Wenn gerade da die Daten verloren gehen, wäre das natürlich unschön.

@cashzero
Ich hatte das gelesen, verstehe es aber nicht richtig. Vielleicht kannst Du mir ein wenig Unterstützung geben.

Die Idee des Codes wäre:

set quelle="X:\...\test"
set ziel="Y:\"

@echo off
xcopy %quelle% %ziel% /D /E /Y /I
Pause

Damit funktioniert das Kopieren des Kompletten Verzeichnisses, wenn ich jetzt aber die 18 Monate (550 Tage) abziehen will wie gehe ich vor?

echo FOR /D %%i in ("quelle") do forfiles /p %%i /d -550 /c "cmd /c move @File %%i\ziel\"
Pause

Wenn ich das eingebe, funktioniert nur der erste Teil.

Gibt es bei xcopy nicht auch sowas wie /MINLAD?

Viele Grüße
Member: empreality
empreality Jul 15, 2009 at 11:40:25 (UTC)
Goto Top
Forfiles kannst du benutzen und Robocopy nicht? Versteh das immer noch nicht ....

Ansonsten schreib und compilier dir doch was mit AutoIT. Ein Tool was das macht was du brauchst hast du in 10 min fertig.
Mitglied: 60730
60730 Jul 15, 2009 at 11:45:44 (UTC)
Goto Top
Zitat von @Koido1:
Erst einmal danke an alle.

Also bin ich auf xcopy angewiesen. Mit exclude kann ich doch keine
Daten ausfiltern, oder etwa doch? Ich dachte bisher immer nur an das
Herausfiltern für bestimmte Dateien, z.B. *doc oder *pdf.

Rem ich bin ein Beispiel - in Pfad sollten .ini und andere  Dateien sein
dir /b Pfad:\*.ini > Pfad:\bsp.log
xcopy Pfad:\*.* Pfad2:\ /exclude:Pfad:\bsp.log

feuerst du diese batch ab - kopiert er alle Dateien, außer den .inis von Pfad nach Pfad2

Gibt es bei xcopy nicht auch sowas wie /MINLAD?
Nicht das ich wüßte, deshalb sind ja die Tools vom Reskit da.

xcopy /?
dir /?

Wie gesagt, das (mit den Monaten ausrechnen) wird "fummelei" und Ansatzweise funktioniert das auch, aber wehe - ein englisches System ist dabei.

daher hab ich da nix aus der Schublade...

Viele Grüße

Gruß
Member: Koido1
Koido1 Jul 15, 2009 at 12:31:04 (UTC)
Goto Top
Du hast recht. Forfiles funktioniert nicht, weil ich die auch nicht vorhanden sind und ich die auch nicht nutzen darf. Das ist zum verzweifeln...
Member: empreality
empreality Jul 15, 2009 at 12:46:06 (UTC)
Goto Top
Wie gesagt, dann bau dir mit AutoIT was selbst. Die Exe-Dateien die da rauskommen kannst du genauso weitergeben oder verkaufen oder was auch immer wie deine Batch-Datei.

Für alles was auch nur halbwegs mit Auswertungen oder Berechnungen etc zu tun hat verwende ich mittlerweile AutoIT. Batch-Scripting ist mir da in meinen Augen zu unnötig kompliziert.
Member: 2hard4you
2hard4you Jul 15, 2009 at 13:10:57 (UTC)
Goto Top
Moin,

Warum ist Robocopy nicht einsetzbar?

Gruß

24
Member: Biber
Biber Jul 15, 2009 at 21:46:55 (UTC)
Goto Top
Moin Koido1,

willkommen im Forum.
Macht da mal nicht so ein Heckmeck drum um das bisschen Anforderung.
Wenn es halt nur nur XCopy sein darf - ja hey! Dann machen wir es halt damit.
MacGuywer hat schon mal mit zwei Büroklammern und einer Wärmflasche das AKW Krümmel repariert.
Oder war das Vattenfall selbst? Egal.

Also:
Xcopy kann nicht: Nur alle Dateien (ggf. in Unterverzeichnissen) kopieren, die ÄLTER sind als Datum x.
Is' nu' mal so.

Aber:
Xcopy kann prima: Nur alle Dateien (ggf. in Unterverzeichnissen) kopieren, die JÜNGER sind als Datum x.

Reicht doch.
Du sagst: "ich soll alle Dateien älter als 18 Monate wegkopieren"....
...okay... ich könnte doch ebenso umformulieren:
"ich soll alle Dateien kopieren ausgenommen Dateien jünger als 18 Monate"

Und ein "Kopieren von allen Dateien /Excluded bestimmte" ..das kann XCopy.
Is' sich sein Job.

Formulieren wie die Ausschlussbedingung um:
-> "außer die, die jünger sind als 18 Monate" ==> Flapsiger formuliert: = "außer die nach dem 01.01.2008"

Diese kann XCopy anlisten mit dem Schalter /L
Demo:
[Alles Test am CMD-Prompt; das ">" am Zeilenanfang kennzeichnet einzutippselnde Befehle]
>xcopy /L /d:01-01-2008 /s /e d:\temp\backup1 f:\ggg\ 
D:\temp\backup1\Backup.bkf
D:\temp\backup1\WINDOWS\win.ini
D:\temp\backup1\WINDOWS\system\test.txt
3 Datei(en) kopiert

Mit dieser Beispielzeile simuliere ich ein XCopy von allen Dateien von "d:\temp\backup1" und darunter nach "f:\ggg\".
Wobei das Verzeichnis "\ggg\" nicht existiert und nicht existieren muss - das Laufwer "F:" dagegen muss da sein.
Außerdem sage ich mit der Bedingung /D.01-01-2008 "nur alles vom oder nach dem 1.Januar 2008".
[Achtung: Format ist MM-TT-YYYY!, s. XCopy / ?]

Alle Dateien werden zwar nur angelistet [Schalter /L], aber dennoch erscheint eine Meldung "x Datei(en) kopiert."

Wenn ich diese Meldung entsorge und den Output in eine Textdatei schreibe, habe ich meine EXCLUDE-Liste.
[Alles Test am CMD-Prompt; das ">" am Zeilenanfang kennzeichnet einzutippselnde Befehle]
>xcopy /L /d:01-01-2008 /s /e d:\temp\backup1 f:\ggg\ |find /v "Datei(en)" 
D:\temp\backup1\Backup.bkf
D:\temp\backup1\WINDOWS\win.ini
D:\temp\backup1\WINDOWS\system\test.txt
:Und was jetzt OHNE die "x Datei(en) kopiert" aufm Schirm ist, will ich lieber in einer Datei:
>xcopy /L /d:01-01-2008 /s /e d:\temp\backup1 f:\ggg\ |find /v "Datei(en)" >%temp%\myExclude.Lst


Jetzt kannst Du das eigentlich gewünschte XCopy-Kommandochen abfeuern:
xcopy  /Exclude:%temp%\myExclude.Lst /s /e d:\temp\backup1 f:\ggg\ 
[Anmerkung] ....und auch das könntest Du zuerst mit dem Schalter /L gefahrlos testen:
xcopy  /L /Exclude:%temp%\myExclude.Lst /s /e d:\temp\backup1 f:\ggg\ 
[/Anmerkung]

Fazit:
  • geht mit XCopy und ohne RobosonstwasCopy
  • geht ohne Batchkenntnisse
  • geht ohne Assemblerprogrammierung zur Datumskonvertierung

2 Zeilen mit "Xcopy" nacheinander vom CMD-Prompt abgeschossen...
..da brauchen wir doch nicht ein halbes Dutzend erwachsene Admins mit beschäftigen.

Grüße
Biber
Member: Woolfsmann
Woolfsmann Jul 16, 2009 at 06:25:31 (UTC)
Goto Top
Hi,

Repekt Herr Biber ;)

Gewust wie und dann noch so gut erklärt, Danke.

gruß
Woolfsmann
Member: Koido1
Koido1 Jul 16, 2009 at 08:05:35 (UTC)
Goto Top
Hallo Biber,

vielen Dank für Deine Info.
Hab das jetzt mal wie folgt umgesetzt.


@echo off
xcopy /L /d:08-04-2009 /s /e /y /i "X:\quelle" "Y:ziel" |find /v "Datei(en)" >%temp%\myExclude.Lst
xcopy /Exclude:%temp%\myExclude.Lst /s /e /y /i "X:quelle" "Y:ziel"
Pause

Das Datum habe ich jetzt zur Probe mal auf unterschiedliche Zeitpunkte gesetzt. Leider kopiert er mir immer das komplette Quellverzeichnis und nicht nur die Dateien, die vor diesem Zeitpunkt liegen.

Wo liegt mein Fehler???

Meine zweiter Frage wäre, ob man das Datum auch dynamisch machen kann. Damit müsste ich es nicht jeden Tag von Hand ändern.

Vielen Dank
Member: Koido1
Koido1 Jul 16, 2009 at 08:31:10 (UTC)
Goto Top
Hallo Biber,

das mit dem Datum funktioniert. Habe immer mit Monat 8 probiert. Juli ist aber 7 und August haben wir noch nicht. Das funktioniert!!!!!!!!!!!

Ich bin grade happy.

Wäre also nur noch meine Frage ob das mit dem Datum dynamisch geht.
Member: Biber
Biber Jul 16, 2009 at 13:11:10 (UTC)
Goto Top
Moin Koido1,
Zitat von @Koido1:
Hallo Biber,

das mit dem Datum funktioniert. Habe immer mit Monat 8 probiert.
Juli ist aber 7 und August haben wir noch nicht. Das funktioniert!!!!!!!!!!!
Hab ich doch gleich gesagt.

Meine zweiter Frage wäre, ob man das Datum auch dynamisch machen kann.
Klar. Lerne zu skripten.

Damit müsste ich es nicht jeden Tag von Hand ändern
Wie? Du bist eingestellt worden, damit Du jeden Tag alles sicherst, was älter ist als 18 Monate?
Wassn das fürn Laden? Gibts doch wieder ABM-Stellen?

Na egal, wenn Du wenigstens im Gegenzug die Rechtschreibfehler im Titel korrigierst und den Beitrag auf "Erledigt" setzt,
dann kannst Du einen schnell zusammengeschroteten Zweizeiler dafür haben.

'DateBeforeXMonth.vbs -Hilfsschnipsel  
d = dateadd("m", wscript.arguments(0), date )  
' Variable d würde "16.01.2008" enthalten   
' wenn heute =15.7.2009 wäre und Parameter gleich (-18) [monate]  
Wscript.echo (month(d) &"-"& day(d) & "-" & year(d) )  
' aber jetzt wird das "16.01.2008" ausgegeben als "1-16-2008" für XCopy  

Die Batch- bzw.CMD-Befehle kennen keine Datumsarithmetik... also "Datum minus 3 Wochen" oder "11.4.2003 plus 20 Monate".
Aber Du kannst jemand fragen, der etwas davon versteht - also zum Beispiel die VBSkript oder JScript-Engines, die auf (fast)jedem Windowsrechner ohnehin nichtstuend rumliegen.

Wenn Du den obigen Schnipsel so aufrufst:
[ wieder gilt: ">" am Zeilenanfang ist mein CMD-Prompt->nicht mit eingeben]
>cscript e:\schnipsel\DateBeforeXmonth.vbs -18
1-16-2008
bekommst du die Ausgabe (das Datum heute vor 18 Monaten) im XCopy-Format.
Wenn Du das ganze in einer Batchvariable verwenden willst, dann baue in Deinen Sicherungsjob ein:
....
FOR /F %%i in ('cscript x:\DeinPfad\DateBeforeXmonth.vbs -18') do Set "xcDate=%%i"  
:: Danach steht in %xcDate% der Wert "1-16-2008", den Du brauchst  
....

Grüße
Biber
Member: Koido1
Koido1 Jul 17, 2009 at 07:40:11 (UTC)
Goto Top
Guten Morgen Biber,

vielen Dank für Deine Mühe. Zum Thema "lerne skripten..." Ich versuche ja schon mein Bestes. Vor einer Woche wusste ich noch nicht einmal was eine Batch-Datei ist. Heute kenne ich wenigstens ein paar Grundbegriffe und hier im Forum steht ne ganze Menge (leider verstehe ich nur ein Bruchteil, aber ich arbeite dran).

Zur ABM-Stelle. Naja, ich bin hier sowas wie die Vertretung vom Stellv. vom Prakti, nur besser bezahlt face-wink)
Muss nur seeeeeeehr flexibel sein. face-wink So sag´s der Chef.

Zum Thema selber.
Langsam kommst Du mir wirklich wie MacGyver, seit Ihr verwandt?

Ich habe jetzt also Deine vbs Datei erstellt:
' datebeforemonth.vbs  

Wscript.quit(datediff("d", wscript.arguments(0), date)< 7)   
d = dateadd("m", wscript.arguments(0), date )   
Wscript.echo (month(d) &"-"& day(d) & "-" & year(d) )   
und die bat lautet jetzt:
@echo off
xcopy /L /d:FOR /F %%i in ('cscript "X:\quelle...\datebeforemonth.vbs -18"') doSet "XCDate=%%i" /s /e /y /i /c "X:\quelle" "Y:\ziel |find /v "Datei(en)" >%temp%\myExclude.Lst  

xcopy /Exclude:%temp%\myExclude.Lst /s /e /y /i /c "X:\quelle" "Y:\ziel"  
Pause

Resultat: Es werden alle Daten von X nach Y kopiert.

Ich habe jetzt mal

cscript "X:\quelle...\datebeforemonth.vbs -18 in den CMD-Prompt eingegeben, da wird ausgegeben:

Eingabefehler: Für die Dateierweiterung ".vbs -18" gibt es kein Skriptmodul.


Habe ich jetzt was falsch eingegeben oder kann ich vbs auch nicht nutzen???

Danke Koido


PS: Überschrift auftragsgemäß geändert.
Member: Biber
Biber Jul 17, 2009 at 08:52:31 (UTC)
Goto Top
Moin Koido1,

Langsam kommst Du mir wirklich wie MacGyver, seit Ihr verwandt?
Na ja, ich habe die Störfall-Verwaltung für einen ungenannt bleiben wollenden Siedewasserreaktor
am Rande von Geesthast geschrieben... das übt.

PS: Überschrift auftragsgemäß geändert.
Komisch - da steht doch immer noch "Datein". Vielleicht habe ich aber auch eine ältere Auflage vom Duden.
(Oder vom "Dudn"??) . Welche hast duden?

Okay, genug gekalauert. face-wink

Ich habe jetzt mal ...
Ich habe jetzt mal deine Codezeilen in Code-Tags gesetzt.
Wenn Du mal "editierst", dann siehst Du wie einfach Code-Formatierungen hier sind.

Ich habe jetzt mal ...

cscript "X:\quelle...\datebeforemonth.vbs -18 in den CMD-Prompt eingegeben, da wird ausgegeben:

Eingabefehler: Für die Dateierweiterung ".vbs -18" gibt es kein Skriptmodul.

Ist 100%ig der richtige Weg zu testen.
Ich denke, Du hast mindestens einen der beiden folgenden Tippfehler drin:
  • entweder nur ein öffnendes Anführungszeichen (und kein zweites) wie oben gepostet
  • und/oder KEIN Leerzeichen zwischen "...skriptname.vbs" und dem Parameter "minus 18"

BTW: ich habe den Parameter "wieviel Monate rückrechnen" aus alter Angewohnheit mit eingebaut, um einen Hauch Flexibilität mit reinzubringen.
Wenn sich bei Dir die Anforderung NIE ändert (immer exakt 18 Monate zurück), dann machen wir es OHNE Parameter.

'---' datebeforemonthvbs  ohne Parameter.vbs  
d = dateadd("m", -18), date )   
Wscript.echo (month(d) &"-"& day(d) & "-" & year(d) )   

Nimm diese abgespeckte Version und probier es nochmal vom CMD-Prompt bitte.

Ich hatte oben einen Tippfehler bei mit drin im letzten Codefragment ("..doset .." statt richtig "...do set..").
Ist bei mir berichtigt, Du hast ihn aber natürlich übernommen. Siehe oben.

Grüße
Biber
Member: Koido1
Koido1 Jul 17, 2009 at 10:57:45 (UTC)
Goto Top
Mahlzeit,

funktioniert noch nicht. Das einzige was ich hinbekommen habe ist das Problem mit dem Duden face-wink)

Mit dem "editieren" ist ne feine Sache, mal sehen ob es auch mit dem schreiben klappt:

Mit den Tippfehlern habe ich überprüft. Eigentlich habe ich beide drin (also nicht die Fehler sondern beide Ansätze). Ich habe die auch mal von so:

('cscript "X:\quelle...\datebeforemonth.vbs  -18"')  

auf so

('cscript "X:\quelle...\datebeforemonth.vbs"  -18')  

und sogar auf so

('cscript ""X:\quelle...\datebeforemonth.vbs"  -18"')  

geändert. Leider funktioniert es trotzdem nicht. Auch das ' vor dem cscript sowie nach der 18 habe ich mal weggelassen, trotzdem kein Ergebnis. Da ich jedoch ein Leerzeichen in meiner Pfadangabe habe, muss ich ja die Leerzeichen nehmen.

Wenn ich
('cscript "X:\quelle...\datebeforemonth.vbs"  -18')  
in den Prompt eingebe, kommt jedoch keine Fehlermeldung mehr. Kopiert wird trotzdem später alles face-sad

Dann habe ich Deine abgespeckte Version versucht. Leider ebenfalls negativ. Er kopiert alles, keine Fehlermeldungen.

Alle beide Versionen habe ich auch mit 1 bzw. 2 Monaten gecheckt. Trotzdem wollt es net. Do set habe ich geändert.

Ich habe irgendwie das Gefühl der erkennt nach dem /d: das alles nicht.

Cu Koido
Member: Biber
Biber Jul 17, 2009 at 13:59:39 (UTC)
Goto Top
Moin Koido,

dann lass uns dieses Detail noch mal Schritt für Schritt durchkaspern.

Bitte öffne einen CMD-Prompt ("Start"-"Bearbeiten"-cmd eintippen)

Dann alle Zeilen die bei mir mit ">" gekennzeichnet sind einzeln per Copy and Paste übernehmen und abschicken
und zwar ohne das erste ">"-Zeichen
(ACHTUNG erste Zeile INKLUSIVE eines ">"-Zeichens am Anfang)
<code tape="plain">
dateMinus18.vbs echo d=dateadd("m",-18, date): Wscript.echo (month(d) ^&"-"^& day(d) ^& "-" ^& year(d))

(=15:55:33 D:\temp=)
type dateminus18.vbs
d=dateadd("m",-18, date): Wscript.echo (month(d) &"-"& day(d) & "-" & year(d))

(=15:55:38 D:\temp=)
cscript dateminus18.vbs
1-17-2008

(=15:55:45 D:\temp=)
for /f %i in ('cscript dateminus18.vbs') do @set "xcDate=%i"

(=15:56:01 D:\temp=)
set xc
xcDate=1-17-2008


Das ausgegebene Ergebnis sollte bei Dir genauso aussehen.

Wenn das passt, machen wir den Rest.

Grüße
Biber
Member: Koido1
Koido1 Jul 20, 2009 at 05:52:09 (UTC)
Goto Top
Guten Morgen Biber,

ich hoffe Du hattest ein schönes WE. Vielen Dank für die Info soweit hat alles funktioniert. Das Datum wurde entsprechend im Prompt ausgegeben.

Cu Koido
Member: Koido1
Koido1 Jul 23, 2009 at 12:28:28 (UTC)
Goto Top
Hallo Biber,

ich habe jetzt verschiedene Sachen probiert komm aber nicht weiter. Wenn Du mir bei dem "Rest" helfen würdest, wäre das super.

Cu Koido
Member: Biber
Biber Jul 23, 2009 at 14:49:20 (UTC)
Goto Top
Moin Koido1,

wo klemmt es denn jetzt noch?
Wenn der von mir zuletzt gepostete Schnipsel bei Dir so tut, was ein Schnipsel eben tun soll, dann...

Übernimm aus meinem Kommentar vom 17.07.09 15:59
  • die Zeile 1 in deinen Batch (damit erzeugst Du eine "dateMinus18.vbs" im aktuellen Verzeichnis)
  • oder (empfohlene Variante) erzeuge statt ">>dateMinus18.vbs" lieber eine ">>%temp%\dateminus18.vbs" im %temp%-Verzeichnis, weil dort immer und für jeden Schreibrechte gegeben sind
  • Rufe das Script auf wie oben in Zeile 12 gezeigt, aber im Batch zwei Prozentzeichen (%%i) statt einem (%i)
  • danach hast Du Deine Variable %xcDate%, die Du in Deinem XCopy-Aufruf verwenden kannst.

Grüße
Biber
Member: Koido1
Koido1 Jul 24, 2009 at 07:23:03 (UTC)
Goto Top
Guten Morgen Biber,

hach wenn ich nur wüsste, wo es klemmt. Ich rauf mir schon die Haare aus.

Ich habe eine dateMinus18.vbs erzeugt, die folgenden code hat:

>dateMinus18.vbs echo d=dateadd("m",-18, date): Wscript.echo (month(d) ^&"-"^& day(d) ^& "-" ^& year(d))   

und ich habe eine koidodateminus18.bat erstellt, die folgenden code hat:

@echo off
xcopy /L /d:FOR /F %%i in ('cscript "X:\quelle\dateMinus18.vbs" -18"') do @set "XCDate=%%i" /s /e /y /i /c "X:\quelle" "Y:\ziel" |find /v "Datei(en)" >%temp%\myExclude.Lst  


xcopy /Exclude:%temp%\myExclude.Lst /s /e /y /i /c "X:\quelle" "Y:\ziel"  
Pause

Im Ergebnis wird jedoch alles von der Quelle ins Ziel kopiert.

Wenn ich beides in eine Bat schreibe, passiert nix. Bin am verzweifeln...

Cu Koido

PS: @set ist nicht doppelt, das wird hier nur doppelt angezeigt.
Member: Biber
Biber Jul 24, 2009 at 21:59:10 (UTC)
Goto Top
Moin Koido1,

hach wenn ich nur wüsste, wo es klemmt. Ich rauf mir schon die Haare aus.
Hach, wenn dabei schon die Nerven blank liegen liegen, dann solltest Du Dich mal mit meiner Ex-Schwiegermutter in den Sommerschlussverkauf stürzen.
Dann können wir noch mal drüber diskutieren, was Stress ist.

Versuch es so:
[Zusammengestoppel aus den Resten von ganz oben (1.Biber-Kommentar und Deinem Ansatz]

@echo off & Setlocal
>%temp%\dateMinus18.vbs echo d=dateadd("m",-18, date): Wscript.echo (month(d) ^&"-"^& day(d) ^& "-" ^& year(d))   
FOR /F %%i in ('cscript %temp%\dateMinus18.vbs') do @set "XCDate=%%i  
xcopy /L /d:%XCDate% /s /e /y /i "X:\quelle" "Y:ziel" |find /v "Datei(en)" >%temp%\myExclude.Lst  
xcopy /Exclude:%temp%\myExclude.Lst /s /e /y /i "X:quelle" "Y:ziel"  

[ungetestet]

Grüße
Biber
Member: Koido1
Koido1 Jul 27, 2009 at 06:18:35 (UTC)
Goto Top
BIBER FOR PRESIDENT!

Es funktioniert!!!

Ich habe jetzt noch /e mit /c ausgetauscht und alles läuft Prima. Oh man, ich bin froh und bedanke mich ganz herzlich. Das war eine hervorragende Arbeit. Danke auch für Deine Ausdauer.

Hab jetzt schon meine nächste Erweiterung dieser Datei im Kopf (löschen alles was älter ist als 19 M), aber dazu muss ich hier im Forum erst mal noch ein bissel schmökern, denn ich habe gesehen, da gibts schon ne Menge dazu.

Nochmals Dank und nö mit Deiner Ex-Schwiegermutter, da würd ich dann doch verzichten. Fachtermini für Personen dieser ART: "Fürst der Finsternis"


CU

Koido