É possível executar um programa no Modo Windows XP diretamente de um arquivo em lotes no Windows 7?

1

Eu tenho o Windows 7 Ultimate com o Windows XP Mode instalado.

No meu sistema operacional host (Windows 7) eu tenho um arquivo em lotes que executa alguns comandos. Eu tenho que executar também três programas que estão instalados no meu Windows XP Mode (debug.exe do Windows e dois outros programas). Existe uma maneira de executá-los diretamente do meu arquivo em lotes?

Obrigado!

Teo Zec
fonte
A partir do CMD, você pode iniciar um link de atalho / programa na C:\Userspasta, embora start /waitnão espere.
AFH
@ AFH Qual comando eu tenho que usar?
Teo Zec
Você pode invocar o link, assim como qualquer exearquivo, por exemplo C:\Users\UserName\Desktop\DeskTopName.lnk. Você pode passar parâmetros, desde que tenha permitido a eles na cadeia de execução do link. Você pode usar start, mas a /waitopção aguarda até que o programa tenha sido programado através do link, não até que o programa de destino termine.
AFH
Eu não tenho XP Mode para testar, mas você não pode associar uma tarefa no Win 7 com a execução do programa XP e definir a tarefa para executar no modo de compatibilidade, em seguida, colocar a tarefa no seu arquivo de lote?
fixer1234
@AFH Sim, mas não consigo copiar um link do Modo XP para o meu PC com Windows 7, pois o arquivo lnk apontará para um arquivo que não existe na unidade do Windows 7 C
Teo Zec

Respostas:

2

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.

AFH
fonte