How to write commands in a console program through a batch file (.bat)?

8

I want to automate a routine through a .bat that calls a console program which, in turn, will receive successive commands from this .bat . This console program could be, for example, an ftp client.

Example:

c:> BaixarArquivo.bat MeuArquivo.ext

Content BaixarArquivo.bat :

cd /d c:\DiretorioDescarga
ftp 111.222.333.444
ftp> mget %0       // Como fazer um 'output' destes
ftp> quit          //  comandos dentro da .bat?

Considering that .bat will wait for the end of the program call, how do you pass these commands on it?

    
asked by anonymous 04.02.2014 / 13:52

3 answers

2

You can direct the inputs as follows:

(
echo mget %0
echo quit
) | ftp 111.222.333.444

However, consult your program's documentation if it allows some execution parameters. It may be that it accepts a list of commands to execute.

    
04.02.2014 / 14:09
5

To pass parameters to a .bat :

echo off
echo %1

In the code above I have passed the parameter number I want to pick, in case it will be just 1:

programa.bat argumento

You can also use the wildcard: %* that it takes all parameters that are passed by space.

To save the return of some command you can create a variable: set arg = retorno

    
04.02.2014 / 14:05
0

You do not need this. You are using Windows itself ftp.exe, right?

Transfers files to and from a computer running an FTP server service
(sometimes called a daemon). Ftp can be used interactively.

FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [host]

  -v              Suppresses display of remote server responses.
  -n              Suppresses auto-login upon initial connection.
  -i              Turns off interactive prompting during multiple file
                  transfers.
  -d              Enables debugging.
  -g              Disables filename globbing (see GLOB command).
  -s:filename     Specifies a text file containing FTP commands; the
                  commands will automatically run after FTP starts.
  -a              Use any local interface when binding data connection.
  -A              login as anonymous.
  -x:send sockbuf Overrides the default SO_SNDBUF size of 8192.
  -r:recv sockbuf Overrides the default SO_RCVBUF size of 8192.
  -b:async count  Overrides the default async count of 3
  -w:windowsize   Overrides the default transfer buffer size of 65535.
  host            Specifies the host name or IP address of the remote
                  host to connect to.

Notes:
  - mget and mput commands take y/n/q for yes/no/quit.
  - Use Control-C to abort commands.

Pay attention to the -s option that allows you to specify a file with the commands that should be executed as soon as the program runs.

Usage example:

ftp.exe -s:comandos.txt

Contents of the command.txt file

open dominio.com.br
usuario
senha
quit

If so, you simply edit the .txt commands so that it fits your needs with the name of the file you want to send or receive. It allows you greater control over the operations that you will perform in FTP.

    
04.02.2014 / 14:07