Ms-Dos - Modificar este .bat

 
Vista:
sin imagen de perfil

Modificar este .bat

Publicado por Will (5 intervenciones) el 10/02/2014 18:27:21
Hola a tod@s:

He intentado modificar este batch (creado por el usuario A.H.H) para que me permita poner un único nombre de directorio y este mismo nombre lleve una numeración del 1 hasta el máximo que le indique. Por ejemplo, el nombre de los directorios sería: DE16-01 donde el DE16 es el nombre del directorio y el 01 es la variable que cambie desde el 01 al máximo que se le indique. He intentado con el comando "for" con la forma FOR /L pero no he logrado lo que necesito.

Por favor sI alguien me puede ayudar se lo agradezco.

el batch que he intentado modificar sin éxito es:

@echo off

set /a contador=0
set /a maximo=20

:bucle
set /a contador=contador+1
set /p nombre=Introduce Nombre carpeta%contador%:
MD "%nombre%"

if %contador% lss %maximo% (goto bucle
) else (
echo ya estan las %maximo% carpetas creadas!
echo pulse una tecla para salir...
pause>nul)
exit
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de A.H.H

Modificar este .bat

Publicado por A.H.H (216 intervenciones) el 10/02/2014 22:49:48
Hola mira si te sirve asi copia y pega el código en un archivo.bat:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
SET /P TOPE=Introduce maximo carpetas para crear:
 set /a contador=0
 set /a maximo=%TOPE%
 
 :bucle
 set /a contador=contador+1
 set nombre=DE16-%contador%
 MD "%nombre%"
 
 if %contador% lss %maximo% (goto bucle
 ) else (
 echo ya estan las %maximo% carpetas creadas!
 echo pulse una tecla para salir...
 pause>nul)
 exit


espero te sirva asi, te crea carpetas como DE16-1 / DE16-2 no consigo que haga asi con el 01 --> DE16-01
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Modificar este .bat

Publicado por Will (5 intervenciones) el 10/02/2014 23:43:03
Hola A.H.H:

Gracias, sí que funcionó. La verdad es que no sé por qué pensé que era igual de fácil con el comando FOR

Como lo has resuelto tú es a simple vista más fácil y claro; bueno yo soy tan solo un principiante.

Intenté colocar el cero en el set nombre=DE16-0 pero luego se repite en todo el bucle hasta el tope que se indique y tampoco es la idea; creo que habría que crear nuevas líneas de comando para controlar la situación del cero en los números de una cifra y luego para los números de más de una cifra.

De verdad un millón de gracias por la ayuda prestada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Modificar este .bat

Publicado por Antoni Masana (811 intervenciones) el 11/02/2014 07:57:48
Esta versión pone el cero y controla el máximo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@echo off
SET /P TOPE=Introduce maximo carpetas para crear:
 
if %Tope% gtr 99 goto Error_Mayor
 
set    contador=100
set /a maximo=%TOPE%+100
 
:bucle
   set /a contador=contador+1
   set nombre=DE16-%contador:~-2%
 
   MD "%nombre%"
 
   if %contador% lss %maximo% (goto bucle
      ) else (
        echo ya estan las %maximo% carpetas creadas!
        echo pulse una tecla para salir...
        pause>nul
        EXIT /B)
   goto Bucle
 
:Error_Mayor
   echo.
   echo. *ERROR*  El valor maximo no puede ser superior a 99
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Modificar este .bat

Publicado por Will (5 intervenciones) el 11/02/2014 17:45:05
Gracias Antoni por tu colaboración; y aunque limita el máximo solo hasta 100 carpetas, es una buena propuesta para la colocación del cero.

¡Gracias de nuevo y saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Modificar este .bat

Publicado por Antoni Masana (811 intervenciones) el 12/02/2014 08:31:12
Puedes ampliarlo a mas dígitos solo debes hacer unas pequeñas modificaciones:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@echo off
 
SET /P TOPE=Introduce maximo carpetas para crear:
 
if %Tope% gtr 9999 goto Error_Mayor                              <---- Aquí
 
set    contador=10000                                            <---- Aquí
set /a maximo=%TOPE%+10000                                       <---- Aquí
 
:bucle
   set /a contador=contador+1
   set nombre=DE16-%contador:~-4%                                <---- Aquí
 
   MD "%nombre%"
 
   if %contador% lss %maximo% (goto bucle
      ) else (
        echo ya estan las %maximo% carpetas creadas!
        echo pulse una tecla para salir...
        pause>nul
        EXIT /B)
   goto Bucle
 
:Error_Mayor
   echo.
   echo. *ERROR*  El valor maximo no puede ser superior a 9999   <---- Aqui


En este ejemplo he ampliado a 4 dígitos

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Modificar este .bat

Publicado por Will (5 intervenciones) el 13/02/2014 16:52:41
Reitero mi agradecimiento Antoni, de verdad muchas gracias a ti y a A.H.H, he aprendido mucho en estas pocas intervenciones.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de A.H.H

Modificar este .bat

Publicado por A.H.H (216 intervenciones) el 13/02/2014 22:05:43
Hola Will y Antoni Masana el siguiente código es mas limpio y simple:

sin tanto lio de añadir o no cifras hacemos una comprobación simple si el contador es mayor o igual 10 que el nombre sea igual a -->DE16-%contador% o sea si es mayor le quitamos el cero
en caso contrario le ponemos el cero ---> DE16-0%contador%



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@echo off
 
SET /P TOPE=Introduce maximo carpetas para crear:
set /a contador=0
set /a maximo=%TOPE%
 
:bucle
 
set /a contador=contador+1
 
if %contador%  GEQ 10 (set nombre=DE16-%contador%
) else (
set nombre=DE16-0%contador%
)
 
 
MD "%nombre%"
 
 
 if %contador% lss %maximo% (goto bucle
 ) else (
 echo ya estan las %maximo% carpetas creadas!
 echo pulse una tecla para salir...
 pause>nul)
 exit


DE NADA Will !! todos aprendemos de todos un poco............................
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Modificar este .bat

Publicado por Will (5 intervenciones) el 14/02/2014 00:52:58
Hola A.H.H:

Sí es interesante el razonamiento, porque claro al solicitar la comprobación abres la posibilidad de poder aplicar una condición si la otra no se cumple. A eso me refería al principio de que el código controlara una u otra circunstancia ya que son en realidad numeraciones "distintas" (porque del 1 al 9 solicita una condición distinta a la condición después del 10) dentro del mismo bucle. Claro yo lo veía pero no lograba alcanzar el código como lo han hecho ustedes: Jajaja el que sabe sabe...

Tenemos como resultado dos códigos que sirven para situaciones similares pero distintas obviamente, ya que el de Antoni Masana numera en función de la cantidad de cifras (si así se requiere), mientras que el tuyo numera colocando el cero desde el inicio ya no en función a la cantidad de cifras sino en función a un simple correlativo del 1 al tope que se pida.

Sigo muy agradecido con ambos porque el ejercicio ha permitido resolver el planteamiento con varias ópticas y enseñarnos mucho a los que pocos sabemos...

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar