Qual é a diferença entre executar um .bat da linha cmd vs. clique duplo?

4

Eu tenho um script .bat com comandos ftp (todos em um) semelhante a isso. Veja abaixo: FTP - Resolvendo Variáveis de Ambiente - Criando scripts FTP dinamicamente em tempo de execução e usando variáveis dentro do script FTP

Quando executo o .bat na linha de comando, tudo funciona bem. Os arquivos são transferidos (no meu caso) do servidor para o meu computador.

No entanto, quando executo esse mesmo arquivo .bat clicando duas vezes, ele não interpreta mais o script ftp corretamente.

Todos os outros arquivos .bat parecem funcionar da mesma forma se forem clicados duas vezes contra chamados da linha de comando. Isso não funcionará aqui? Se sim, porque não?

EDITAR:
Parece que o problema é quando ele atinge o primeiro comando ftp que usa uma variável.
Por exemplo, ele irá abrir e conectar bem, mas meu próximo comando é get com uma variável para o nome do arquivo. Parece que não consegue ler o nome da variável e apenas recebe chamadas. No entanto, eu não vejo esse problema quando eu chamo o morcego da linha cmd ....

EDITAR
Problema corrigido, veja minha resposta abaixo.

Obrigado.

    
por Tommy 20.01.2010 / 23:40

3 respostas

1

RESPOSTA:
Minhas variáveis foram declaradas antes do loop for que salva os comandos ftp em um arquivo temporário e, em seguida, substitui as variáveis pelos valores. Então, nesse ponto, não havia variáveis para substituir as usadas no script ftp.

Aparentemente só estava funcionando na linha de comando, porque uma vez eu o chamei na primeira vez que ele provavelmente errou lá, mas se eu o chamei novamente sem fechar o console, as variáveis agora estavam armazenadas na memória. A partir daí, parecia que estava sempre trabalhando no console.

Uma vez que eles foram armazenados na memória, não importava que o loop for fosse antes das variáveis. As variáveis foram agora armazenadas na memória depois de abri-lo pela primeira vez.

Ao clicar duas vezes, ele estava abrindo para a primeira sessão, todas as vezes, e as variáveis eram apagadas na memória depois de serem fechadas automaticamente. Então, neste caso, abriu e fechou, cada vez que eu cliquei duas vezes.

A abertura para a primeira sessão, depois de chamá-la novamente no mesmo console, sem encerrá-la, foi a principal diferença aqui. Chamando pela primeira vez, as variáveis seriam salvas ANTES de o script ftp ser criado.

Por favor, sinta-se à vontade para editar isto, se você puder deixar mais claro ...

    
por 21.01.2010 / 00:15
2

Isso é muito difícil sem saber como o script está falhando.

A principal diferença entre a execução de uma janela do prompt de comando e um clique duplo seria o diretório de trabalho.

Você não pode alterar isso em arquivos de lote normais, mas pode criar um atalho para o arquivo de lote e alterar o diretório Start in: lá.

    
por 20.01.2010 / 23:49
1

Eu diria que o seu diretório atual está errado ao clicar duas vezes no arquivo .bat e é isso que está fazendo com que ele não encontre o script FTP.

Tente adicionar echo %CD% ao arquivo em lote e veja o que ele imprime em cada caso.

    
por 20.01.2010 / 23:47