[batch] file copy wanneer 'date created' hoger is

Pagina: 1
Acties:
  • 737 views sinds 30-01-2008
  • Reageer

  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 26-02 11:43
Ik wil graag een bestand updaten via het loginscript van mijn netwerk, wat nu bestaat uit

code:
1
xcopy "\\server\file.ade" "c:\" /y
:'(

wat ik graag wil is dat als het bestand op de server veranderd wordt, het script dit ziet en de file kopieert naar de client.
Dit kan imo met de 'date created' eigenschap van het bestand, op te halen met het DIR commando.
de bestanden hebben geen fileversion, dus daar kan niet op geselecteerd worden.

ik kom dus in dit geval uit op

code:
1
DIR file.ade /tc


met als reply
C:\>dir file.ade /tc
Het volume in station C heeft geen naam.
Het volumenummer is ****-****

Map van C:\

15-05-2007 09:01 24.357.888 FILE.ade
1 bestand(en) 24.357.888 bytes
0 map(pen) 57.482.321.920 bytes beschikbaar


daar probeer ik dan weer een piped find op te doen, dus

code:
1
DIR file.ade /tc | FIND "-" > ~date.txt


nu kan ik met
code:
1
 :~[START POS],[LENGTH]
gaan selecteren welk stuk tekst ik wil, maar, nu zit ik met het probleem dat er de volgende tekst staat:

Het volume in station C heeft geen naam.
Het volumenummer is ****-****
Map van C:\


vóór de 'time created'..!

wat kan ik hier aan doen?

you had me at EHLO


  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 13-01 07:19
Op wat voor OS? In een moderne windows kun je gewoon xcopy /d gebruiken.

  • hufkes
  • Registratie: Maart 2000
  • Laatst online: 01-03 12:08

hufkes

nee, daar staat niet hufter!

Als de xcopy /d niet kan, dan is het prima mogelijk via batch en find hoor, maar waarom een find op "-"?

Je moet gewoon een pipe doen naar find "FILE.ade", dan krijg je alleen die regel en die begint dus met de datum en tijd het bestand.

code:
1
dir file.ade|find ".ade">date.txt

Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P


  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 26-02 11:43
_js_ schreef op dinsdag 05 juni 2007 @ 17:14:
Op wat voor OS? In een moderne windows kun je gewoon xcopy /d gebruiken.
is dat de modified date of de created date?

edit: het werkt iig wel :) ff zoeken naar een oude file :D

oké:


code:
1
dir /tc file.ade|find ".ade">date.txt


geeft een output van:

05-06-2007 21:02 56.466.332 file.ade

en dat is goed, daar kan ik een 'count' (weet niet hoe het heet) op doen :+

[ Voor 40% gewijzigd door sjongenelen op 05-06-2007 21:06 ]

you had me at EHLO


  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Is powershell niks voor je? Ik denk dat je hiermee dingen probeert die niet met de standaard DOS shell kan.

Misschien een .vbs scriptje?

We are pentium of borg. Division is futile. You will be approximated.


  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 26-02 11:43
powershell is xp sp2 only..
http://www.microsoft.com/.../powershell/download.mspx

en ik ben niet zo sterk met vbs..


update

ik krijg het niet voor elkaar :?


code:
1
 dir /tc test.ade>output.txt
plaatst de juiste info in het bestand output.txt, dat is goed opzich.

Nu wil ik de info uit dit bestand halen en daar een string van maken. Maar hoe doe ik dit? of misschien moet ik er gelijk een string van maken, zonder het in een bestand op te slaan. dat is nog beter |:(

[ Voor 53% gewijzigd door sjongenelen op 06-06-2007 13:50 ]

you had me at EHLO


  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 17:48
Probeer het anders eens met robocopy (ook van Microsoft). Hoef je helemaal niet op de datum te letten. dat doet robocopy al voor je.

Voorbeeld:
code:
1
robocopy "\\server\share" "c:\" file.ade

[ Voor 21% gewijzigd door jvdmeer op 06-06-2007 15:09 ]


  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 26-02 11:43
jvdmeer schreef op woensdag 06 juni 2007 @ 14:52:
Probeer het anders eens met robocopy (ook van Microsoft). Hoef je helemaal niet op de datum te letten. dat doet robocopy al voor je.
zou kunnen, maar bij de info staat er of "copy files which are newer"

maar staat niet bij of het om de create date gaat of modified date (zal laatste wel zijn)


Of met een andere filesize. Ik weet nu niet of die file altijd gelijk blijft, dat zou ik even moeten controleren

you had me at EHLO


  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 17:48
TheNymf schreef op woensdag 06 juni 2007 @ 14:57:
[...]


zou kunnen, maar bij de info staat er of "copy files which are newer"

maar staat niet bij of het om de create date gaat of modified date (zal laatste wel zijn)


Of met een andere filesize. Ik weet nu niet of die file altijd gelijk blijft, dat zou ik even moeten controleren
Het gaat hier om de modified date. Maar dat kan je zelf snel proberen.

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 17-02 18:05

DeMoN

Pastafari

code:
1
FOR /F "skip=4" %i IN ('dir /tc file.ade') DO @echo %i |findstr "[0-9][0-9]-"

Weet niet of je er wat aan hebt, bij mij op de cmd geeft dit puur de datum als output :)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 04-03 22:42

Creepy

Tactical Espionage Splatterer

Misschien wat laat maar Batch scripting e.d. hoort thuis in Windows Clients. Zie ook Waar hoort mijn topic?.
Move Programming -> Windows Clients

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 26-02 11:43
DeMoN schreef op donderdag 07 juni 2007 @ 00:20:
code:
1
FOR /F "skip=4" %i IN ('dir /tc file.ade') DO @echo %i |findstr "[0-9][0-9]-"

Weet niet of je er wat aan hebt, bij mij op de cmd geeft dit puur de datum als output :)
dat is precies de goede output..! maar nu zit ik nog met probleem, hoe krijg ik dat nu verwerkt?


dus
FOR /F "skip=4" %i IN ('dir /tc file.ade') DO @echo %i |findstr "[0-9][0-9]-"
geeft bijv "01-01-2007"
maar ik kan geen
code:
1
SET datum1 = FOR /F "skip=4" %i IN ('dir /tc file.ade') DO @echo %i |findstr "[0-9][0-9]-"

doen om dan vervolgens die %datum1% te vergelijken met een andere datum..

you had me at EHLO


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 18:27
Kan aan mij liggen, maar ik snap je niet.
Al vrij snel word xcopy als optie aangeboden, waarbij je zegt dat het werkt.
Waarom gebruik je dit dan niet?

Vervolgens ga je toch door om deze optie in een batch te laten verwerken.
Dan kom je er weer niet uit....
Als je het leuk vind om dit met batches op te lossen, waarom koop je dan geen boek om het op te lossen ?

Ik weet het verschil tussen created en modified date, maar heb je dit ook daadwerkelijk nodig ?

The best thing about UDP jokes is that I don't care if you get them or not.


  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 26-02 11:43
Remco schreef op donderdag 07 juni 2007 @ 10:46:
Kan aan mij liggen, maar ik snap je niet.
Al vrij snel word xcopy als optie aangeboden, waarbij je zegt dat het werkt.
Waarom gebruik je dit dan niet?

Vervolgens ga je toch door om deze optie in een batch te laten verwerken.
Dan kom je er weer niet uit....
Als je het leuk vind om dit met batches op te lossen, waarom koop je dan geen boek om het op te lossen ?

Ik weet het verschil tussen created en modified date, maar heb je dit ook daadwerkelijk nodig ?
1: scheelt véél netwerktraffic, xcopy gebruikte ik al (zie starttopic)
2. omdat daarvoor GoT toch is?
3. telkens als je een .ade file opent, veranderd de modified date. dus ja, anders is de mod. date op de client hoger dan de server.

you had me at EHLO


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 17-02 18:05

DeMoN

Pastafari

Misschien kom je er hiermee uit, het is namelijk mogelijk om de output in een variabele te krijgen:
http://groups.google.nl/g...9/5dae3c8cb34d2c02?lnk=st

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 17:48
TheNymf schreef op donderdag 07 juni 2007 @ 11:03:
3. telkens als je een .ade file opent, veranderd de modified date. dus ja, anders is de mod. date op de client hoger dan de server.
Nee, access-date wijzigt, De modified date blijft hetzelfde. Tenzij er natuurlijk een fout in de software zit die het bestand niet als lezen opent, maar als schrijven.

  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 26-02 11:43
dat zal dan wel in access 2000 RT, de modified date veranderd iig...

UPDATE:

gelukt :P


3 files:

1e checkt serverversie en plaats het in een textfile
2e checkt clientversie en plaats het in een textfile
3e vergelijkt de info uit de textfiles en roept een xcopy op als de datum niet klopt.

batchfiles voor het ophalen v/d data:

code:
1
FOR /F "skip=4" %%i IN ('dir /tc file.ade') DO @echo %%i | findstr "[0-9][0-9]-">>~serverdate.txt


heel simpel de dubbele %% en dubbele >> vergeten... 8)7
vergelijking met dit:

code:
1
IF /I 'c:\~clientdate.txt' LSS 'c:\~serverdate.txt' GOTO COPY etc. etc.

[ Voor 80% gewijzigd door sjongenelen op 11-06-2007 11:17 ]

you had me at EHLO


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 17-02 18:05

DeMoN

Pastafari

Mooi dat het opgelost is en thx voor het posten van de oplossing :)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein

Pagina: 1