2010-10-16 15 views
5

Estoy empezando a aprender scripts de línea de comandos, y tengo una tarea para la escuela en la que la primera parte es crear un archivo por lotes que acepte dos enteros como parámetros. Los enteros serán manipulados posteriormente a lo largo de la pregunta, y no estoy buscando ayuda con eso. He buscado en Google de muchas maneras diferentes, y parece que no puedo encontrar una respuesta. ¿Cómo comienzo esto?Cómo crear un archivo por lotes que acepte dos enteros como parámetros

Sé que esto es muy básico para, probablemente, todos los que lean esto, pero les pido que me corten un poco, todos tenemos que empezar en algún lado.

+0

Qué sistema operativo? – ChrisF

Respuesta

9

Suponiendo MS-DOS, puede usar %1, %2, etc. para los parámetros de entrada.

@ECHO OFF 

SET /a INT1=%1 
SET /a INT2=%2 

SET /a ANSWER=INT1*INT2 

ECHO %ANSWER% 

PAUSE 

A continuación, podría llamar a esto como:

mybatchfile.bat 2 4 
+2

solo para tener en cuenta: esto no funcionará con MS-DOS, porque no hay 'set/a' en MS-DOS. (aunque está bien con CMD) – Stephan

3

En las ventanas, es %1 %2

http://commandwindows.com/batch.htm

ejemplo:

@echo off 

echo %1 %2 

set /a v = %1 
set /a v2 = %1 + 1 
set /a v3 = %1 * 2 

echo %v% %v2% %v3% 
+0

Sí, lo siento mucho, es en Windows 7 que estamos haciendo esto. Supongo que mi confusión proviene de la muestra que se nos dio en nuestra conferencia, en la que se asignó una variable dentro del script, y llamamos al archivo 'param'. murciélago'. Luego ejecutamos el archivo como param.bat4 (o el número que sea), y el 4 se asignó como la variable. No podía imaginar cómo diablos se suponía que debía obtener dos enteros de esa manera. Solo confundido, supongo. – mrwienerdog

+0

Entonces, para que el usuario asigne el valor del parámetro, yo solo – mrwienerdog

+0

Maldita sea, sigo presionando regresar, así que tengo algunas publicaciones, lo siento. ¿Cómo conseguiría que el usuario ingrese el parámetro? – mrwienerdog

3

Asumiendo que este es Windows, puede hacer referencia a los parámetros en el script como %1 y %2.

+0

Guau, estoy impresionado. En otros casos, cuando busqué ayuda técnica en Internet (en referencia al material relacionado con la escuela), algunos de los que respondieron fueron muy groseros cuando respondieron preguntas (esencialmente llamando al cartel estúpido). ¡Ustedes son geniales! Muchas gracias por su ayuda, ahora puedo terminar mi pregunta sin ningún problema. – mrwienerdog

+0

De nada, ¡me alegra ayudar! –

0

Si el requisito de su asignación no específicamente decir que definitivamente debe utilizar por lotes (cmd.exe), puede utilizar VBScript. Tiene un mejor manejo de errores, y puede hacer cálculos en coma flotante, etc., mejor que lo que cmd.exe puede ofrecer.

On Error Resume Next 
num1= CInt(WScript.Arguments(0)) 
num2= CInt(WScript.Arguments(1)) 
total=num1 + num2 
If Err.Number <> 0 Then 
    WScript.Echo "Description: " & Err.Description 
    Err.Clear 
Else 
    WScript.Echo "Added: " & total 
End If 

ejemplo

C:\test>cscript //nologo assigment.vbs 1 2 
Added: 3 

C:\test>cscript //nologo assignment.vbs 1 test 
Description: Type mismatch 
+0

Especifica lote. Aunque, lo que has escrito se ve muy bien, ¡y estoy deseando saberlo! – mrwienerdog

Cuestiones relacionadas