Programmieren - alles kontrollieren 4.937 Themen, 20.654 Beiträge

BatchFIle-Synchronisation

Mdl / 15 Antworten / Flachansicht Nickles

Der Hintergrund der folgenden Frage ist der, dass ich es unter Windows XP letzlich noch immer nicht geschafft habe, dass ein im Autostart-Ordner eingetragenes Programm genau einmal gestartet wird (und nicht mehrmals). In meinem Fall will ich ein Batchprg. eben genau einmal starten. Ich kann nicht recht verstehen, wieso das (bei mir) so ist, aber - nunja, dann bastelt man eben einen Workaround...

Dieser Workaround sieht bei mir in etwa so aus.
1 Falls Laufwerk Z: definiert ist => Batchfile beenden
2 SUBST Z:
3 ... ; weitere Befehle

Da SUBST sich auf das ganze System auswirkt funktioniert das i.d.R. auch ganz gut.
Es gibt aber einen Schwachpunkt, der in letzter Zeit des öfteren Auftritt.

Befindet sich Aufruf A am Ende der Zeile 1 und Aufruf B ist jetzt am Zug, dringt auch Aufruf B zu Zeile 2 vor, d.h. Aufruf A und B durchlaufen letztlich alle Zeilen. Mein selbstgestrickter Mechanismus funktioniert also nicht immer...

?????
? Weiß jemand eine Möglichkeit wie man das verhindern kann.

Vielen Dank,

Mdl

P.S. Ich finde es eher eine (Batch-)Programmierkniffelei als ein XP-Problem, deshalb lege ich es unter diesem Forum ab...

bei Antwort benachrichtigen
Mdl Nachtrag zu: „BatchFIle-Synchronisation“
Optionen

Habe für mein Ursprungsproblem (doppeltes Ausführen eines Autostart-Eintrags) eine bereits früher gefundene Lösung wiederentdeckt:

Autostart-Ordner nur noch einmal ausführen

Registry-Änderungen:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Startup: Textersetzung 'All Users' -> '' (z.B. ICH)
innerhalb des Eintrags

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Startup: Textersetzung '%ALLUSERSPROFILE%' -> '%USERPROFILE%' innerhalb des Eintrags

Bem: Obwohl der Autostart-Ordner ja in 'C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Autostart' gelegt wurde, wird er jetzt trotzdem (genau einmal) ausgeführt...


ABER ...

Trotzdem würde mich eine allgemeine Lösung für das Problem interessieren, wie man in einem Batchfile Bereiche definieren könnte, die bei parallel ablaufenden Batchfiles nur jeweils von einem gleiczeitig abgearbeitet werden können (ein evtl. anderer Anwärter müsste dann solange warten, bis das diesen Bereich innehabende Batchfile den Bereich verlassen hat.

Mir fallen da Stichworte wie 'Mutual Exclusion' und 'Semaphore' ein...

Irgendeine Idee?

Viele Grüße,

Mdl

bei Antwort benachrichtigen