hifclif
Goto Top

Dateien mit dem Datum von gestern in einen Ordner kopieren

hallo leute,

leider konnten mir die jungs aus dem batch-lager nicht weiterhelfen. jetzt hoffe ich mal auf euch.

und zwar ich sollte vom laufwerk z:\ die dateien mit dem gestriegen datum jeweils auf das laufwerk d:\sicherungen kopieren.

auf dem laufwerk z: sicherungssätze drauf. ca 8 datien haben immer das selbe datum. und ich sollt wie gesagt immer die daten vom letzten tag kopiert haben.

könnt ihr mir da helfen. ich habe leider keinen tau von vbs!
deshalb auch ein wenig leicht verständlich bleiben.

wäre echt super

merci

Content-ID: 47967

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

Ausgedruckt am: 20.11.2024 um 14:11 Uhr

totto
totto 04.01.2007 um 17:59:07 Uhr
Goto Top
Werden die Dateien immer nur 1x kopiert? Dann geht es nämlich supereinfach mit xcopy...

xcopy /m z:\*.* d:\sicherungen

Das "/m" bewirkt, dass nur Daten mit gesetztem Archivattribut kopiert werden, und das Attribut nach dem Kopieren zurückgesetzt wird.

Ergo werden Dateien, die bereits kopiert wurden, nicht nochmal kopiert, sondern nur neue Dateien.
Hifclif
Hifclif 04.01.2007 um 18:07:16 Uhr
Goto Top
hi,

merci für die rasche antwort. leider habe ich aber keinerlei schreibrechte auf das laufwerk.
gibts nicht irgendwie ein vbs wo das kann?
totto
totto 04.01.2007 um 18:09:40 Uhr
Goto Top
Sind, zu dem Zeitpunkt, wo Du die Daten kopierst, auch schon neuere Dateien auf dem Laufwerk Z?

Oder sind die neusten Datien diejenigen, die Du kopieren sollst (also die von gestern)?
Hifclif
Hifclif 04.01.2007 um 18:12:21 Uhr
Goto Top
nein die daten die ich kopieren sollte sind die neuesten. sonst sind nur noch ältere drauf.
Biber
Biber 04.01.2007 um 19:17:35 Uhr
Goto Top
leider konnten mir die jungs aus dem batch-lager nicht weiterhelfen
Das macht mich aber nun ein wenig betroffen...

Nochmal eine der skizzierten Batch-Lösungen, auf die verwiesen wurde, im ganzen Satz (aber ungetestet):
::---CopyVonGestern.bat
@echo off & setlocal
echo wscript.echo dateAdd("d",-1, date())>%temp%\Gestern.vbs  
For /f %%i in ('cscript //nologo %temp%\Gestern.vbs') do set "Gestern=%%i"  
del %temp%\Gestern.vbs
@for /f "tokens=4,*" %%i in ('dir /A:-d z:\ ^|find "%Gestern%"') do copy "z:\%%i" d:\datensicherungen  
::----CopyVonGestern.vbs
Zugegeben, mit VBS-wäre es auch nicht länger, aber wenn Du die geposteten Lösungen ohnehin nicht verstehst, ist ja egal, ob Batch, Delphi oder VBS.

Ebenso funktionieren würde auch miniversums Variante (totto's natürlich auch, wenn Du Schreibrechte hättest) sowie ein gutes Dutzend Varianten mit ForFiles.exe, DelAge32.exe und ähnlichen. Findet man/frau über die so genannte Forumssuche.

Dann setze wenigstens den aus Deiner Sicht unlösbaren Parallel-Thread in Batch und Shell mit einem grünen Haken auf "Erledigt", ehe sich da noch weitere abstrampeln. Ich kann leider den Beitrag nicht schließen, weil unser WebMassa scholl da offensichtlich einen neuen Bug reingesemmelt hat - Beiträge schließen geht grad nicht.

Eine reine VBS-Lösung zu "Dateien mit bestimmten Datumswerten irgendwas machen" hat auch bastla schon mal ins Forum und in die Public Domain gepostet.

Grüße
Biber,
der sich jetzt erst mal einen Baldrianteechen aufsetzt...
[Edit]
Alzheimer-Korrektur im Beispiel-Schnipsel -siehe bastla's Kommentar unten.
Und einen als Dienst laufenden Batch zum automatischen Teewasser-Aufsetzen bei neuen Hifclif-Beiträgen hab ich jetzt auch. face-wink
[/Edit]
Hifclif
Hifclif 04.01.2007 um 21:40:40 Uhr
Goto Top
hallo bieber,

ich wollte dich doch nicht gleich aus der reserve locken. der tee hat sicher geholfen und ich hoffe wenn du wieder mal hifclif liest du nicht gleich wasser aufstellen gehst.......

wäre ich mir im klaren gewesen das wenn ich zuerst im batch bereich was poste und dann so hinterlistig auch noch im vbs nicht gleich die welt untergeht.

ich möchte mich trotzdem bei allen bedanken die mir geholfen haben.

cu

hifclif
bastla
bastla 04.01.2007, aktualisiert am 16.07.2013 um 09:00:26 Uhr
Goto Top
Hallo hifclif!

Bei Biber's Batch ist in der Zeile
For /f %%i in ('cscript //nologo %temp%\Gestern.vbs') do set "Gestern=%%i"  
das "i" am Ende nicht gut zu sehen - bitte nicht darauf vergessen.

Grüße
bastla
Biber
Biber 04.01.2007 um 23:32:53 Uhr
Goto Top
Thx @bastla,

ich werde an meinen guten Vorsätzen wohl noch arbeiten müssen... face-wink

@Hifclif

An Dich auch noch mal ein "Sorry" für mein Aufplustern vorhin - es war nur, weil ich eigentlich ganz angetan davon war, dass zu Deiner Batch-Anforderung, die in anderen Foren immer pauschal abgebügelt wird mit "Geht nicht mit Batch, aber es gibt da ein Shareware-Utility namens BlaBlubb.exe.." oder "Ich habe dafür eine kleine Exe in C# geschrieben...", dass dafür also innerhalb von Minuten gleich mehrere brauchbare Antworten kamen.
Da war ich dann schon etwas angefasst bei Deiner Formulierung.

Es ging mir aber nicht darum, dass es mit Batch besser oder einfacher oder lesbarer ginge als mit VBS - da bin ich relativ leidenschaftslos.
Da es letzten Endes ja ohne Datums-Berechnungsfunktionen a la DateAdd()/DateDiff() nicht (sinnvoll) geht, spricht wirklich nichts gegen eine vollständige Umsetzung mit VBSkript.

Grüße
Biber
totto
totto 05.01.2007 um 05:06:09 Uhr
Goto Top
Ach Du herrje, hier wird ja gleich mit Kanonen auf Spatzen geschossen...

Also wenn die Dateien, die kopiert werden sollen immer die neusten sind, dann langt auch ein:

xcopy /d z:\*.* d:\sicherungen

Das "/d" impliziert, dass nur Dateien kopiert werden, die neuer als die bestehenden Zieldateien sind, oder diejenigen, die im Ziellaufwerk nicht vorhanden sind...

Ich spreche jetzt nur für mich, aber ich bin der Meinung, dass i.d.R. die einfachste Lösung meist auch die beste ist...

Nix für Ungut...

so long
Totto