Toon posts:

[Batch login] kopieren van 1 file als die nieuwer is

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

Verwijderd

Topicstarter
Elke gebruiker heeft hier hetzelfde adressenboek met ms outlook, deze staat op hun eigen netwerkschijf. (.pab file)

Ik ben de gene die de wijzingen maakt in die file, wanneer ik dat gedaan heb, moet ik die file bij elke gebruiker, die file in hun homemap zetten.

Nu wil ik dit toevoegen in het login script. Momenteel staan wat verwijzingen in het login script naar netwerk shares.
Dit allemaal wil ik gewoon in een .bat file pleuren. Ik wil dus GEEN kixtart gebruiken. Het script moet checken of de gebruiker dat bestand als heeft, en als die ouder is dan dat bestand wat ik heb bewerkt, moet deze worden vervangen door de nieuwste versie.

Ik heb me rot gezocht, zowel op GoT als op google. Maar kon niks nuttigs vinden.

Wanneer je een script post, zou je er dan ook bij kunnen zetten waar wat voor dient.
(Eigenlijks wat te veel hoofdletters in de topic titel)

[ Voor 4% gewijzigd door Verwijderd op 09-09-2003 15:18 ]


  • Krypt
  • Registratie: April 2000
  • Laatst online: 16:35
Download even robocopy (Resourcekit).. kun je een optie meegeven dat ie alleen oude files overschrijft met de nieuwe..
offtopic:
(Topic change via: Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/got/images/icons/icon_hand.gif)

[ Voor 48% gewijzigd door Krypt op 09-09-2003 15:29 ]

Pvouput live


Verwijderd

Topicstarter
Hmz dat programma(tooltje) heb ik laatst nog ergens anders voor gebruikt. Alleen dan is me vraag, kan ik dit alleen op de server neer pleuren, of moet ik dat op elke client neerzetten??

Moet ik dan de optie /xo gebruiken ?

[ Voor 10% gewijzigd door Verwijderd op 09-09-2003 16:01 ]


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Het maakt niet uit waar het staat, maar het moet vanaf lokaal te zijn aanroepen aangezien het logon script daar draait. Robocopy hoeft niet per se trouwens, xcopy kan het ook:
C:\>xcopy /?
[....]
/D:d-m-j Kopieert bestanden die op of na de opgegeven datum zijn gewijzigd. Als u geen datum opgeeft, worden alleen bestanden gekopieerd waarvan de brontijd nieuwer is dan de doeltijd.
Afhankelijk van de OSsen op de clients natuurlijk.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Topicstarter
Ik zal zo eens testen, het klinkt makkelijker dan ik dacht. Zijn trouwens nt4 w2k en xp stations.

Verwijderd

Topicstarter
Loop nu tegen het probleem op dat de xcopy versies verschillend zijn op de nt en w2k pc' s dan de xp machines. Wanneer ik bij xp iets kopieer vraagt hij of ik het wel wil kopieren, daarom heb ik de opties /Y gebruikt.
Dit script dus: xcopy Q:\Beenen\Mail\cpbeenen.pab H:\mail\cpbeenen.pab /D /Y

Maar nu zag ik op een nt machine dat bij die versie van xcopy geen /Y zit.

Ik krijg iig de onderstaande foutmelding.
Afbeeldingslocatie: http://www.utinfosite.com/diamond/beenen/xcopy.jpg

  • PipoDeClown
  • Registratie: September 2000
  • Niet online

PipoDeClown

Izze Zimpell

schaf http://www.xxcopy.com aan of gebruik http://www.kixtart.org voor je logonscripts

God weet alles, want hij is lid van de Mosad. To protect your freedom i will take that away from you. Mijn drankgebruik heeft ernstig te lijden onder mijn gezondheid.


Verwijderd

Topicstarter
Hmz in de topicstart gaf ik aan dat ik geen kixtart wil gebruiken. xxcopy heb ik ook al ergens, maar dan moet ik dat eerst weer op elke client neerpleuren. Het moet toch mogelijk zijn met het bestaande systeem van wk2 server iets te brouwen zijn.

Kleine toevoeging: onder nt werkt:
xcopy Q:\Beenen\Mail\cpbeenen.pab H:\mail\cpbeenen.pab /D wel.

Ik moet in het loginscript aangeven of het voor nt is of xp. Ik zelf dacht eerst aan if %os% maar die is gelijk.
Maybe windows map ? xp zet het in c:\windows en nt en 2000 in winnt d8 ik.

[ Voor 26% gewijzigd door Verwijderd op 10-09-2003 11:42 ]


Verwijderd

Topicstarter
if exist c:\windows xcopyxp Q:\Beenen\Mail\cpbeenen.pab H:\mail\cpbeenen.pab /D /Y
if exist c:\winnt xcopynt Q:\Beenen\Mail\cpbeenen.pab H:\mail\cpbeenen.pab /D

Ik ben ff aan het knutsellen geweest, en had het hierbovende werkend. Met 2 verschillende xcopy files. Werkt voor NT en XP, probleem is echter 2000 werkt niet met die van nt. Dus dat zal wel weer een andere xcopy versie zijn.
Hoe kan ik het verschil tussen NT 4 en w2k prof aangeven in het script, als ik nog een xcopy file erbij zet van w2k.

  • Krypt
  • Registratie: April 2000
  • Laatst online: 16:35
waarom pleur je die xxcopy niet in dezelfde directory als de pab; of desnoods dump je 'm in je netlogon directory op je server... dan kun je 'm vanaf daar opstarten..

Als je echt zo met batch wilt klooien kun je met een for statement werken:
for /f "tokens=5" %%x in ('ver') do if %%x LEQ 4.0 goto NT
for /f "tokens=5" %%x in ('ver') do if %%x GTR 4.0 goto W2kXP
maar ik weet niet of de ver van nt 5 tokens uitgeeft, moet je ff testen anders..

[ Voor 8% gewijzigd door Krypt op 10-09-2003 13:42 ]

Pvouput live


Verwijderd

Topicstarter
ok ben nog ff met xxcopy bezig geweest maar die blijft maar zeuren dat ik het moet installeren.

Heb robocopy ook ff geprobeerd, maar die ziet bij het testen test.txt als een map.

Heb je misschien een url met de uitleg van de code die je hierboven geeft. Want dat zegt me niks. En kan ook niks nuttigs vinden wat het voor me uitlegt.

[ Voor 26% gewijzigd door Verwijderd op 10-09-2003 14:49 ]


  • Krypt
  • Registratie: April 2000
  • Laatst online: 16:35
command prompt openen en intypen:
for /? -> alle info over de for statement
if /? -> alle info over de if statement..

Pvouput live


Verwijderd

Topicstarter
Ok dit is een stuk duidelijker, maar begrijp nog niet alles. Het werkt jammer genoeg niet, als ik deze regel intik in cmd box:

for /f "tokens=5" %%x in ('ver') do if %%x EQL 5.1 echo test

Krijg dan de melding: %%x niet verwacht op dit moment.

Wat ik niet snap van het script hierboven is, hoe heeft je aangeeft hoe hij aan die 4.0 / 5.0 en 5.1 kan komen. Ik heb ver al in een dos box ingetypt, alleen krijg dan een ontzettend lange naam, nl: Microsoft Windows XP [versie 5.1.2600]

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Verwijderd schreef op 11 September 2003 @ 15:16:
Krijg dan de melding: %%x niet verwacht op dit moment.
C:\>for /?
[....]
Als u de opdracht FOR in een batchprogramma wilt gebruiken, moet u %%variable opgeven in plaats van %variable. Variabele-namen maken onderscheid tussen hoofd- en kleine letters, dus %i is iets anders dan %I.
Dus met %x vanaf de prompt :Y)

En hele lange string: daar is het tokens voor: hij ziet nu als X 5.00.2195] en slaat "Microsoft Windows 2000 [versie" over (in Win2k dan :+ )
Zoals gezegd: test dat even uit door in alle OSsen ver in te typen en te kijken hoeveel elementen het bevat.
Trouwens heeft for /? een mooie uitleg, en de DOS sites in de SA een nog mooiere dus kijk daar even naar (en speel er evt wat mee).

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Topicstarter
Nu is de werking van het script me een stuk duidelijker, door de uitleg van hierboven. Waardoor ik bedrijp waar alles voor staat, kan ik sneller dingen uittesten. Ik ga hier morgen weer ff meebezig als ik tijd over heb. (Ga nu lekker naar huis :) )

Verwijderd

Topicstarter
Ik heb het werkend, en wil u allen bedanken _/-\o_

Ik zal ook even vertellen hoe ik het heb opgelost:

Eerst heb ik van elk verschillend OS de xcopy gekopieerd en in de SYSVOL gezet. Die heb ik gerenamed naar xcopynt voor NT4.0, xcopyw2k voor windows 2000 en xcopyxp voor windows xp.

Vervolgens heb ik de onderstaande scripts gebruikt.

for /f "tokens=2" %%x in ('ver') do if /I %%x==NT-versie xcopynt H:\test.txt h:\test\test.txt /D
for /f "tokens=3" %%x in ('ver') do if /I %%x==2000 xcopyw2k H:\test.txt h:\test\test.txt /D /Y
for /f "tokens=3" %%x in ('ver') do if /I %%x==xp xcopyxp H:\test.txt h:\test\test.txt /D /Y

Die EQL LEQ enzo werkte niet. En na wat gepruts had ik door hoe die tokens werkten. Zoals je hierboven ziet.

Uitleg van tokens:
NT: Tokens=2 pakt het 2e woord van versie(Microsoft NT-versie 4.0) NT-versie dus.
W2k: Tokens=3 pakt het 3e woord, van versie (Microsoft Windows 2000 etc) Die pakt dus 2000.

Ik had eerst mijn twijfels of het deel na DO wel werkte, maar ik kwam er achter dat hij het deel na DO op de volgende regel plakt, en dan pas uitvoert.

Dit stukje uitleg heb ik ff geschreven voor de mensen die het zelfde willen. Of het later met de search zullen vinden.

[ Voor 5% gewijzigd door Verwijderd op 12-09-2003 11:49 ]


  • Krypt
  • Registratie: April 2000
  • Laatst online: 16:35
Damn.. net een hele reply getypt; druk op verstuur krijg ik een dns error...

Maarja.. nog een keer in het kort dan..

DIAMOND-mtk; toppie... zelf verder uitgezocht + feedback gegeven; waren er maar meer die dat deden... (wilde ik even kwijt)..

Nog 1 dingetje.. het is verstandiger om bij een if vergelijking aanhalingstekens om de variable en het te vergelijken string te zetten.. als er toevallig namelijk je variable %%x leeg is krijg je een syntax fout... De command prompt ziet dan het volgende als je %%x leeg is

if /i ==xp xcopyxp + de rest... en krijg je een syntax fout.. Als je er quotes omheen gooit dan klopt de syntax altijd ook al is %%x leeg.
if /i ""="xp" xcopyxp + de rest (je syntax is dan: if /i "%%x"=="xp" xcopyxp + de rest)
Ik hoop dat ik het een beetje fatsoenlijk uitleg

ten 2e zou je het script ook ietjes sneller kunnen laten werken.. nu start je script namelijk 3x 'ver' op en 3x een forlus.. aangezien je tokenverdeling hetzelfde blijft kun je dat in 1 for statement zetten..

for /f "tokens=3" %%x in ('ver') do set NTVER=%%x
if /i "%%x"=="NT-versie" xcopynt H:\test.txt h:\test\test.txt /D
if /i "%%x"=="2000" xcopyw2k H:\test.txt h:\test\test.txt /D
if /i "%%x"=="xp" xcopyxp H:\test.txt h:\test\test.txt /D

Even ter info :) (en nu wel even CTRL-C'en voordat deze post weer weg is)

Pvouput live


Verwijderd

Topicstarter
Heb het nu een tijdje draaien, alleen loop ik tegen 1 probleem aan. Het was dus de bedoeling dat wanneer ik me eigen adresboek (van ms outlook) aanpas, dat ik deze op het netwerk zet, en dat deze gekopieerd wordt bij het inloggen wanneer de andere gebruikers een oudere versie hebben.

Wanneer ik nu halve wege de dag er een bestand neer zet, gaat met mis. Omdat de users meestal later op de dag hun pc afsluiten en daardoor, wordt het .pad gewijzigd.
Dus nu hebben zij een nieuwere versie op hun eigen home dir staan dan de file die ik op het netwerk heb.
Ik kan bv heel vroeg de file aanpassen, voordat er gebruikers op het netwerk zitten. Maar dit is niet helemaal full-proof (omdat er bijna altijd wel iemand is die eerder online is), en onhandig.

Iemand enig idee hoe ik dit het beste kan oplossen, en nog steeds met behulp van het bovenstaande script.

Verwijderd

Ik neem aan dat zo'n bestandje nooit groot kan zijn, waarom kopieer niet gewoon altijd het bestandje. Dan weet je zeker dat iedereen een gelijke versie heeft, als je een beetje netwerk hebt (100 mbit) dan is het in secondes gebeurd.

Of je gaat weer een dagje scripten of je zet een regel in wat altijd kopieerd, de vraag is wat is sneller "altijd kopieeren" of een "dagje sleutelen" de tijd die je erin insteek moet je natuurlijk wel eruit halen anders kun je je tijd beter ergens anders aan besteden.
En als je echt helemaal niks meer te doen heb zou ik zeggen kijk er nog eens naar en optimaliseer het dan nog eens.

[ Voor 3% gewijzigd door Verwijderd op 24-09-2003 09:22 ]


Verwijderd

Topicstarter
Late reactie, maar heb het een beetje druk gehad deze week.
We hebben hier voor het grootste gedeelte inderdaad, 100mbit netwerk.

Alleen het bestandje is 1.5 mb groot en groeit bij elke aanpassing.(Bedrijf groeit ook.)
We hebben hier zo'n 50/60 gebruikers.
Ik kan wel altijd laten kopieeren, maar vertraagd dat het netwerk niet??
Vooral wanneer iedereen 's morgen op het zelfde tijdstip op de zaak komt.

Iemand misschien een ander idee hoe ik dit alsnog kan aanpassen.

(PS lees wel alles ff door voordat je gaat reageren)
Pagina: 1