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-Key: 43101

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

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

Member: Loeneberger
Loeneberger Oct 26, 2006 at 13:19:29 (UTC)
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
Member: Shaby
Shaby Oct 26, 2006 at 13:20:53 (UTC)
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
Mitglied: 37414
37414 Oct 26, 2006 at 13:29:45 (UTC)
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
Member: Shaby
Shaby Oct 26, 2006 at 13:33:46 (UTC)
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
Member: Biber
Biber Oct 26, 2006 at 13:41:04 (UTC)
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
Member: VoSp
VoSp Oct 26, 2006 at 13:50:17 (UTC)
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
Mitglied: 37414
37414 Oct 26, 2006 at 13:52:12 (UTC)
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
Member: ghofmann
ghofmann Oct 26, 2006 at 13:56:04 (UTC)
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.
Mitglied: 37414
37414 Oct 26, 2006 at 13:57:33 (UTC)
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
Mitglied: 37414
37414 Oct 26, 2006 at 13:59:19 (UTC)
Goto Top
Danke ghofmann,

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

Gruss
Ingo
Member: VoSp
VoSp Oct 26, 2006 at 14:03:22 (UTC)
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
Mitglied: 37414
37414 Oct 26, 2006 at 14:24:48 (UTC)
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
Member: Biber
Biber Oct 26, 2006 at 14:39:07 (UTC)
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
Mitglied: 37414
37414 Oct 26, 2006 at 15:00:26 (UTC)
Goto Top
Hallo Biber,

wie mache ich das mit dem Auslesen aus einer Textdatei?
Member: Biber
Biber Oct 26, 2006 at 15:55:42 (UTC)
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
Mitglied: 37414
37414 Oct 27, 2006 at 05:59:01 (UTC)
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