Uma abordagem barata e alegre para conseguir isso é através de um diretório compartilhado (que provavelmente terá caminhos diferentes no XP e no W7, embora você possa usar uma letra de unidade para o compartilhamento e torná-lo o mesmo em ambos). Você pode simplesmente usar a presença de arquivos de comando e resposta para sincronizar a execução em cada sistema.
No XP você tem um shell de comando rodando constantemente com o loop principal: -
:Loop
sleep 10
if not exist {XPshare}\XPcommand.cmd goto Loop
del {XPshare}\XPresponse.txt
call {XPshare}\XPcommand.cmd > {XPshare}\XPcommand.txt
ren {XPshare}\XPcommand.txt XPresponse.txt
del {XPshare}\XPcommand.cmd
goto Loop
Você pode querer adicionar logging e refinar o script. Após o callcomando, você pode adicionar echo {unique string}Completion status = %errorlevel% >> {XPshare}\XPcommand.txte selecionar isso na pós-análise.
Sempre que você quiser executar um comando XP a partir do W7, chame um cmdscript com o comando passado em seus parâmetros e contendo: -
del {W7share}\XPresponse.txt
echo %* > {W7share}\XPcommand.cmd
:Loop
sleep 2
if exist {W7share}\XPcommand.cmd goto Loop
Quando você retornar disso, poderá analisar XPresponse.txte executar qualquer pós-processamento. Não é estritamente necessário excluir XPresponse.txt, mas apenas garante que nenhuma resposta anterior possa confundir quaisquer verificações do W7.
Existem inúmeras versões do sleep.exe, que suspende por um número de segundos, incluindo dois do MS, em Serviços para Unix e no Windows Resource Kit . O número de segundos para escolher é um equilíbrio entre a capacidade de resposta e a sobrecarga de pesquisa. Eu sugeri um intervalo mais curto no W7, porque o polling é feito apenas enquanto o comando XP está sendo executado, enquanto no XP ele é feito em todos os outros momentos.
C:\Userspasta, emborastart /waitnão espere.