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 call
comando, você pode adicionar echo {unique string}Completion status = %errorlevel% >> {XPshare}\XPcommand.txt
e selecionar isso na pós-análise.
Sempre que você quiser executar um comando XP a partir do W7, chame um cmd
script 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.txt
e 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:\Users
pasta, emborastart /wait
não espere.