Tudo,
Eu tenho um problema interessante que procurei em toda parte por uma resposta e fiquei aquém. Espero que alguém lá fora possa lançar alguma luz sobre o porquê isso está acontecendo.
Eu tenho um CD que contém vários aplicativos C ++ e um arquivo em lotes que é executado para copiar os arquivos para os pontos corretos usando XCOPY. Sim, a operação xcopy acontece com sucesso e os novos aplicativos são colocados nos pontos corretos.
O problema que estou tendo é logo após o arquivo em lote terminar de copiar o arquivo, fechar a janela do arquivo de lote, ejetar o CD e executar qualquer um dos aplicativos recém-copiados de seu novo local no computador. Eu recebo o erro do Windows "Não há nenhum disco na unidade. Por favor, insira um disco na unidade D:". (Esse é o nome da minha unidade de CD)
Meus programas NÃO possuem referências a nenhum caminho relativo / codificado. Na verdade, quando eu reconhecer esse erro 4 ou 5 vezes e reabrir o programa, NUNCA vejo o erro novamente. Para ver o erro aparecer novamente, tenho que executar o arquivo de lote novamente a partir do CD e retirar o CD antes de executar o aplicativo.
Apenas para mais esclarecimentos, fazer uma cópia / colagem manual (Ctrl + c, Ctrl + v) de um aplicativo do disco funciona bem. Se eu copiar / colar manualmente e ejetar o CD, o programa funciona bem. Esse erro ocorre apenas na primeira vez que o programa é executado depois de eu copiá-lo com um arquivo em lotes e remover o CD antes de executar o programa. Além disso, reiniciar o computador depois que o arquivo em lotes é executado impede que esse problema aconteça também.
Sei o que você está dizendo, se reiniciar o computador depois de copiar o arquivo corrige o problema, por que ele está fazendo essa pergunta aqui? Bem, eu tenho que copiar este arquivo em mais de 30 computadores sem rede de cada vez e leva um longo tempo para reiniciar cada um deles.
Existe alguma marcação estranha do Windows dos aplicativos quando eles são copiados com o XCOPY para onde o programa ainda pensa que está no CD depois de ser copiado? Alguém tem alguma sugestão, comentário ou link que me aponte na direção certa? Qualquer ajuda seria fenomenal.
Muito obrigado!
EDIT: eu esqueci de mencionar que isso é no sistema operacional Windows XP.
EDIT2: Aqui está o código do meu arquivo de lote.
@ECHO OFF
SET INSTALLSERVER=%~dp0
e SET AppProgramFiles=%ProgramFiles%\ApplicationName\
XCOPY "%INSTALLSERVER%Scenario\*.*" "%AppProgramFiles%Scenario\" /C /Y /q
em XCOPY "%INSTALLSERVER%Plan\*.*" "%AppProgramFiles%Plan\" /C /Y /q
em XCOPY "%INSTALLSERVER%Data" "%AppProgramFiles%Data\" /C /Y /q /e
em XCOPY "%INSTALLSERVER%Misc\*.*" "%AppProgramFiles%Misc\" /C /Y /q
Como eu mencionei acima, eu posso copiar / colar o aplicativo e o programa roda muito bem. Não há erro se eu fizer assim. O erro "Nenhum disco na unidade" aparece APENAS se copiar o aplicativo usando um arquivo em lotes. De fato, eu vi o mesmo problema se eu copiar um aplicativo usando um arquivo vbscript também. Eu estou querendo saber se o Windows XP tem alguma maneira estranha de marcação de aplicativos que são copiados de um CD usando um processo como o batch / vbscript? Alguma idéia?
Tags windows batch-file xcopy