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 ...