37414
Goto Top

Datei-Update für alle PCs im Netzwerk automatisieren

Per Batch-Datei (oder anderer Möglichkeit) soll ein Update für eine Datei automatisch auf allen PCs aktuallisiert werden.

Hallo,

seit heute bin ich neu hier im Forum und bin begeistert von den vielen interessanten Berichten und Beschreibungen hier.

Nun habe ich selbst ein kleines Problem:

Wir erhalten ca. alle 2 Wochen ein Update einer EXE-Datei, welches ich in einem bestimmten Verzeichnis auf dem Server ablege.
Diese EXE-Datei muss ich bisher dann an jedem einzelnen Rechner (Client) vom Serverlaufwerk in ein bestimmtes Verzeichnis auf der Festplatte kopieren und die vorherige Datei dann überschreiben.

Da dies sehr aufwändig ist, möchte ich den Vorgang gerne automatisieren.

Ist es möglich, z.B. über eine Batch-Datei oder eine sonstige Möglichkeit, die neue EXE-Datei gleichzeitig auf allen Clients zu ersetzen, die mit dem Programm arbeiten?

Das sind in meinem Fall etwa 12 PCs, die sich alle in der gleichen Domäne befinden.

Wer hat eine Lösung für mich?

Schon jetzt - vielen Dank für Eure Hilfe.

Gruss
Ingo

Content-ID: 43101

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

Ausgedruckt am: 25.11.2024 um 22:11 Uhr

Loeneberger
Loeneberger 26.10.2006 um 15:19:29 Uhr
Goto Top
Hi.

Mein Tip ist:

Synctoy von Microsoft selbst.Es ist seit Oktober kostenlos erhältlich und gleicht Verzeichnisse ab.

Ich find´s toll.

Grüße
Loeneberger
Shaby
Shaby 26.10.2006 um 15:20:53 Uhr
Goto Top
Moin

Klar geht das - einfach ins Anmelde Script einfügen

Befehl xcopy Quelle Ziel

(im cmd help xcopy dort findest du die nötigen parameter)

Grüsse Shaby
37414
37414 26.10.2006 um 15:29:45 Uhr
Goto Top
Hallo Shaby,

danke für die Antwort.
Allerdings soll die Batch-Datei ja nicht bei jeder Anmeldung ablaufen, sondern nur, wenn ein Update vorliegt.
Ich müßte also eine Batchdatei haben, die ich nur dann ausführe, wenn es nötig ist und die dann auch nur die 12 Clients updatet, die mit dem Programm arbeiten.

Noch nen Tipp?

Danke,
Ingo
Shaby
Shaby 26.10.2006 um 15:33:46 Uhr
Goto Top
hmm, dann könntest du die Batch Datei Lokal auf dem Client einmal einrichten und diese per automatischen Task z.B. alle Woche einmal suchen lassen, findet er etwas kopiert er es dann.

ist jedoch auch noch nicht die "schöne" Lösung - ich überlege mir auch mal noch eine weitere Möglichkeit und poste Sie hin, falls sie mir noch etwas einfällt.

Edit

Oder du erstellt die Batch Datei auf dem Desktop mit einem schönen Symbol und gibst ein Mail an die MA wenn Sie den Button fürs kopieren drücken sollen.
Shaby
Biber
Biber 26.10.2006 um 15:41:04 Uhr
Goto Top
Moin imebro,

die logische Fortführung von Shaby's Ansatz wäre dann, in jedem Loginscript noch eine Prüfung vorher zu machen, ob der jeweilige Anwender denn
- dieses Programm hat (if exist c:\....\dieseApp.exe ....) ODER
- ob dieser Anwender für dieses Programm berechtigt ist ( Ifmember dieseAppzUserGroup...) -ODER-
- ob dieser Anwender dieseApp.exe installiert hat (->ask Registry for details)

-UND-

ob die beim Anwender lokal vorhandene dieseApp.exe-Version älter (Versionsnummer) ist als die auf dem Server.

Gruß
Biber
VoSp
VoSp 26.10.2006 um 15:50:17 Uhr
Goto Top
Hallo imebro,

schreib doch ein Script das die lokalen Admin Freigaben benutzt.

Also einfach ein:
xcopy <x:\quelle der Datei> \\rechnername\c$\programmverzeichniss\hier soll die Datei rein

Wenn Du es ganz schön haben willst packst Du das in ne Schleife und liest <rechnername> aus ner Datei ein. In dieser Datei pflegst Du alle eure Rechnernamen ein. Na ja bei 12 Cleints kannst Du den xcopy ja auch 12 mal ausführen.

Schön ist natürlich auch was biber vorschlägt, erst mal die Version der Datei erfragen und dann das script entscheinden lassen wann kopiert wird.

Du müsstest allerdings bei jeder versionsänderung das Skript anpassen.

Bis dann

VoSp
37414
37414 26.10.2006 um 15:52:12 Uhr
Goto Top
Hallo an alle Helfer,

danke für Eure nette Hilfe.

Im Grunde komme ich damit schon ganz gut klar.

Ich hatte gehofft, dass es möglich ist, dass ich z.B. am Server sitze und dort irgendeine Datei (Batchdatei?) starte, die dann automatisch die darin eingetragenen 12 PCs updatet. Die Batchdatei könnte ja sicher die PC-Namen (Netzwerknamen) enthalten... somit würden dann nur diese PCs upgedatet.

Geht sowas?

Nochmal DANKE!
Ingo
ghofmann
ghofmann 26.10.2006 um 15:56:04 Uhr
Goto Top
Nur so 'ne Idee jetzt...
Ist die Anwendung evtl. so beschaffen, dass sie sich aus einem UNC-Pfad aufrufen lässt, also etwa so:
\\meinserver\meineapp\meinprog.exe

In dem Fall könntest Dir die Kopiererei ersparen.
37414
37414 26.10.2006 um 15:57:33 Uhr
Goto Top
Die beiden Antworten haben sich wohl überschnitten.

Danke VoSp.
Habe das mit der Versionsnummer schon durch "replace" mit dem Parameter "/u" gelöst. Dabei wird nur kopiert, wenn die zu kopierende Datei neuer ist.

Ich poste hier einfach mal meine bisherige Batchdatei:

@echo OFF

echo Das Antragsprogramm wird aktualisiert!

ECHO.

ping -n 5 localhost >nul

REM -----------------------------------------------------------------------------------------------------------
REM Die Datei wird nur ersetzt, wenn die zu kopierende ein aktuelleres Datum hat [ u ]
REM Falls die Datei schreibgeschützt ist, wird sie dennoch ersetzt [ r ]
REM -----------------------------------------------------------------------------------------------------------

replace s:\antrag\update\antraege.exe c:\programme\"hassheider datasystems"\antrag /u /r

@echo Kopiervorgang beendet - das Antragsprogramm wurde aktualisiert!

ECHO.

@echo Das Updateprogramm wird beendet!

ping -n 7 localhost >nul


Jetzt fehlt mir nur noch die Möglichkeit, die einzelnen Rechnernamen mit einzubeziehen.

Gruss
Ingo
37414
37414 26.10.2006 um 15:59:19 Uhr
Goto Top
Danke ghofmann,

nein - die EXE ist auf jedem Client installiert im Verzeichnis C:\............
Sie kann nur darüber gestartet werden.

Gruss
Ingo
VoSp
VoSp 26.10.2006 um 16:03:22 Uhr
Goto Top
Hallo nochmal,

replace s:\antrag\update\antraege.exe c:\programme\"hassheider datasystems"\antrag /u /r

Einfach das "c:\programme" durch "\\rechnername\c$\programme" ersetzen.

Ich hoffe das das replace das kann, wenn nicht xcopy oder robocopy nehmen, da gibts ähnliche optionen wie dein \u.

Bis dann

VoSp
37414
37414 26.10.2006 um 16:24:48 Uhr
Goto Top
Danke - Ihr seid Klasse face-smile

Habs jetzt mal so versucht.
Habe aber auf den Clients das Verzeichnis "Antrag" einfach freigegeben - so, dass nur vom Admin zugegriffen werden kann und dann geht es auch.

Versuche jetzt, in der Batchdatei eine Zeile für jeden Client einzubinden und hoffe, dass das dann auch klappt.

Danke mal wieder,
Ingo
Biber
Biber 26.10.2006 um 16:39:07 Uhr
Goto Top
Batchdatei eine Zeile für jeden Client einzubinden

...lass lieber die Batchdatei die ganzen Zeilen mit den Clientnamen aus einer Textdatei lesen...

Ist etwas wartbarer.

Gruß
Biber
37414
37414 26.10.2006 um 17:00:26 Uhr
Goto Top
Hallo Biber,

wie mache ich das mit dem Auslesen aus einer Textdatei?
Biber
Biber 26.10.2006 um 17:55:42 Uhr
Goto Top
Moin Ingo,
Such mal über Forumssuche nach "For /F" oder "zeilenweise lesen".
Beispiel für eine (einspaltige) Textdatei mit ein paar Clientnamen:

Inhalt von "c:\test\MeineClients.txt":
Rechner105
CLIENT$32
10.180.999.32

Am Cmd-Prompt ein %-Zeichen vor den %i-Zählvariablen; im Batch zwei (%%i).
For /F %i in (c:\test\MeineClients.txt) Do ....(irgendwas) mit jedem %i...

Im Batch dann sinngemäß:
....
For /F %%i in (c:\test\MeineClients.txt) Do (
     REM ....(irgendwas) mit jedem %%i...
     REM ...hier können ein oder mehrere Zeilen stehen
     REM ... und die aktuelle Zeile der c:\test\MeineClients.txt heißt hier %%i
     REM ...und wenn alles fertig ist->KlammerZu
)

HTH Biber
37414
37414 27.10.2006 um 07:59:01 Uhr
Goto Top
Guten Morgen an Alle!

Möchte mich nochmal für die super Hilfe bedanken.
Mein Problem ist gelöst - die Batchdatei funktioniert einwandfrei.

Kann sie schon nächste Woche gebrauchen und spare mir so ne Menge Zeit.

Liebe Grüsse und schönen Tag für Euch!

Ingo