You are on page 1of 3

Pasar información a un fichero bat

Paso de parámetros a un archivo bat


Hay dos métodos para pasar información a un archivo bat:

1) línea de comandos
2) entrada estándar

1- Paso de parámetros a un archivo bat desde entrada estándar

SET /P variable=[mensaje]

El modificador /P permite establecer el valor de una variable para una línea de entrada
escrita por el usuario. Muestra el mensaje antes de leer la línea de entrada.

NOTA: Funciona a partir de W2000, y deben estar habilitadas las extensiones de comando.

grosero.bat
@echo off
set /p nombre=¿Cómo te llamas?
echo.
echo nunca me gustó el nombre de %nombrex%

Por recibir el argumento desde entrada estándar, podemos introducir la información a través de
de un pipe, o redirigida desde un archivo o dispositivo:

X:\pruebas>grosero.bat
¿Cómo te llamas? Paco Pico

nunca me gustó el nombre de Paco Pico

X:\pruebas>echo Ferreolo Anastasio | grosero.bat


¿Cómo te llamas?

nunca me gustó el nombre de Ferreolo Anastasio

X:\pruebas>grosero.bat < grosero.bat


¿Cómo te llamas?

nunca me gustó el nombre de @echo off

NOTA: Podemos usar comillas en el mensaje que no serán visualizadas: set /p


nombre="¿Cómo te llamas? "

2- Paso de parámetros a un archivo bat desde línea de comandos

Podemos introducir datos al fichero .bat desde línea de comandos, que serán almacenados en
las denominadas variables posicionales:
En %0 se almacena el nombre del comando
En %1 se guarda el valor del primer argumento
%0, %1, %2, ..., %9
En %2 se guarda el valor del segundo argumento, y así

1 de 3
sucesivamente.

El parámetro %* contiene la lista con todos los argumentos introducidos desde línea de
comandos.

El siguiente programa repite lo que introducimos desde línea de comandos (excepto el nombre
del comando):

repite.bat

@echo %*

Y sin mucho esfuerzo podemos dar la vuelta a una frase de hasta 9 palabras:

reverse.bat

@echo %9 %8 %7 %6 %5 %4 %3 %2 %1

X:\>repite lo que yo te diga


lo que yo te diga
X:\>reverse lo que yo te diga
diga te yo que lo

SHIFT

En el ejemplo anterior, vemos que si la frase tiene más de 9 palabras, reverse no las visualiza:

X:\>reverse En un lugar de la Mancha de cuyo nombre no quiero acordarme ...


nombre cuyo de Mancha la de lugar un En

Cuando los argumentos desde línea de comandos son más de 9, es necesario irlos
desplazando si queremos leer todos.
El comando SHIFT desplaza el valor de todos los argumentos posicionales un lugar hacia la
izquierda:

modifiquemos un poco el fichero reverse.bat para ver el funcionamiento de shift:

reverse.bat

@echo off
echo %9 %8 %7 %6 %5 %4 %3 %2 %1
shift
echo %9 %8 %7 %6 %5 %4 %3 %2 %1
shift
echo %9 %8 %7 %6 %5 %4 %3 %2 %1

2 de 3
X:\>reverse En un lugar de la Mancha de cuyo nombre no quiero acordarme ...
nombre cuyo de Mancha la de lugar un En
no nombre cuyo de Mancha la de lugar un
quiero no nombre cuyo de Mancha la de lugar

Si las extensiones de comando están habilitadas, podemos comenzar los deplazamientos en un


determinado parámetro. Por ejemplo:

SHIFT /2

Realiza el desplazamiento a partir del argumento %2, dejando fijos los parámetros %0 y %1.

3 de 3

You might also like