2012-07-17 22 views
5

Estoy tratando de escribir un archivo por lotes que realiza operaciones en función del resultado de una operación de módulo realizada en una variable establecida. Sin embargo, parece que no puedo hacerlo bien.¿Cómo realizo correctamente las operaciones del módulo en Batch?

Para probar antes mi sintaxis para la operación matemática, he estado tratando de obtener un script más simple para producir los resultados deseados.

:START 
SETLOCAL 
SET /P Input-Num="Input Number: " 
SET /A Input-Num=%Input-Num% %% 2 
ECHO %Input-Num% 
ENDLOCAL 
PAUSE 
:END 

Si 5 de entrada, la salida esperada es 1. Sin embargo, en su lugar recibo un mensaje que dice Missing operator. y luego da como resultado 5.

¿Qué estoy haciendo mal aquí?

+0

¿Es este DOS u otra cosa? Obtengo '1' sin' operador faltante' cuando ejecuto esa muestra exacta (con '@ECHO OFF' agregado en la parte superior) – LittleBobbyTables

+1

Su código funciona bien cuando proviene de un archivo por lotes. Si lo estás escribiendo directamente en CMD, entonces no te salgas de '%'. use '%' en lugar de '%%'. – vcsjones

+0

@LittleBobbyTables Primero, me encanta tu nombre de usuario. Está en CMD en Windows 7. He actualizado las etiquetas. – Iszi

Respuesta

4

El uso de SET /P es su problema, ya que 5 ya no se trata como un valor numérico. Su ejemplo anterior funciona como se esperaba

+0

¿Hay alguna manera de usar 'SET/P' (o algo que funcionaría de manera similar) * y * realizar operaciones matemáticas en la variable? – Iszi

+0

Ver este enlace: http://stackoverflow.com/a/684389/334849. Usan 'SET/P', luego hacen' SET/A' para una segunda variable más adelante en el código. – LittleBobbyTables

+0

Probé eso ahora. Aún no funciona. Ahora obtengo * dos * errores de "operador faltante". – Iszi

Cuestiones relacionadas