Ein billiger und fröhlicher Ansatz, um dies zu erreichen, ist über ein gemeinsam genutztes Verzeichnis (das wahrscheinlich unterschiedliche Pfade in XP und W7 hat, obwohl Sie für die Freigabe einen Laufwerksbuchstaben verwenden können, der auf beiden Systemen gleich ist). Sie können einfach die Anwesenheit von Befehls- und Antwortdateien verwenden, um die Ausführung auf jedem System zu synchronisieren.
Unter XP haben Sie eine Befehlsshell, die ständig mit der Kernschleife läuft: -
:Loop sleep 10 if not exist \XPcommand.cmd goto Loop del \XPresponse.txt call \XPcommand.cmd > \XPcommand.txt ren \XPcommand.txt XPresponse.txt del \XPcommand.cmd goto Loop
Sie können die Protokollierung hinzufügen und das Skript anderweitig verfeinern. Nach dem call
Befehl können Sie dies hinzufügen echo Completion status = %errorlevel% >> \XPcommand.txt
und in die Nachanalyse aufnehmen.
Wenn Sie einen XP-Befehl von W7 aus ausführen möchten, rufen Sie ein cmd
Skript mit dem übergebenen Befehl in den Parametern auf und enthalten: -
del \XPresponse.txt echo %* > \XPcommand.cmd :Loop sleep 2 if exist \XPcommand.cmd goto Loop
Wenn Sie von hier aus zurückkehren, können Sie XPresponse.txt
jede Nachbearbeitung analysieren und durchführen. Es ist nicht unbedingt notwendig zu löschen XPresponse.txt
, aber es stellt nur sicher, dass keine vorherigen Antworten W7-Überprüfungen verwechseln können.
Es gibt unzählige Versionen von sleep.exe
, die für einige Sekunden ausgesetzt werden, darunter zwei von MS, in Services für Unix und in Windows Resource Kit . Die Anzahl der Sekunden, die Sie wählen müssen, ist ein ausgewogenes Verhältnis zwischen Reaktionsschnelligkeit und Polling-Aufwand. Ich habe für W7 ein kürzeres Intervall vorgeschlagen, da die Abfrage nur ausgeführt wird, während der XP-Befehl ausgeführt wird, während unter XP alle anderen Zeiten ausgeführt werden.