Crear archivos y que se enumeren

A ver si me podéis echar una mano.

Imaginaros que tengo este archivo po-oi-14066-000001-a.dwg se me ha ocurrido que con un bat podamos copiar este archivo tantas veces que queramos y a la vez se numere.

000 – es capitulo siempre son 3 dígitos

001 – el número de hoja siempre son 3 dígitos

Ejemplos de archivos

Po-oi-14066-000001-a.dwg capitulo 0 hoja 1

Po-oi-14066-000010-a.dwg capitulo 0 hoja 10

Po-oi-14066-003001-a.dwg capitulo 3 hoja 1

Po-oi-14066-003015-a.dwg capitulo 3 hoja 15

Po-oi-14066-010005-a.dwg capitulo 10 hoja 5

Po-oi-14066- nombre del proyecto este dato es variable porque habrá innumerables proyectos pero fijo en todos los archivos del proyecto

-a.dwg este dato es fijo en todos los proyectos

La idea que tengo es que me pregunte nº de capítulos 0 incluido y nº de hojas por capitulo. Siendo el número de hojas el mismo para todos los capítulos.

Ejemplo:

Nº de capítulos 0 incluido = 5 (los capítulos empiezan en el 000)

Nº de hojas por capitulo = 3 (las hojas empiezan en la 001)

Tras responder a estas dos preguntas el archivo bat crearía estos archivos:

Po-oi-14066-000001-a.dwg po-oi-14066-000002-a.dwg po-oi-14066-000003-a.dwg

Po-oi-14066-001001-a.dwg po-oi-14066-001002-a.dwg po-oi-14066-001003-a.dwg

Po-oi-14066-002001-a.dwg po-oi-14066-002002-a.dwg po-oi-14066-002003-a.dwg

Po-oi-14066-003001-a.dwg po-oi-14066-003002-a.dwg po-oi-14066-003003-a.dwg

Po-oi-14066-004001-a.dwg po-oi-14066-004002-a.dwg po-oi-14066-004003-a.dwg

1 Respuesta

Respuesta
1

No me había llegado la pregunta. No sé que sistema utiliza la página para comunicar las preguntas a los supuestos "expertos" pero a mí no me la ha mandado. Al entrar "de visita" la he visto.

No acabo de entender para que puede servir tener un número variable de copias, con distinto nombre, de un mismo archivo, pero tampoco hay necesidad de que lo entienda.

Sugiero que el nombre del proyecto sea también un parámetro a pedir. También podría ser un parámetro a pasar en la línea de llamada.

Mira a ver si esto se adapta a vuestras necesidades:

@echo off
set /p ProyN=Nombre del proyecto:
set /p CapN=Numero de capitulos (incluido el cero):
set /p HojN=Numero de hojas/capitulo:
set /a CapN=%CapN% - 1
for /l %%c in (0,1,%CapN%) DO (call :TratCap %%c)
goto :EOF
:TratCap
set cap=%1
if %1 LSS 100 set cap=0%1
if %1 LSS 10 set cap=00%1
for /l %%h in (1,1,%HojN%) DO (call :TratHoj %%h)
goto :EOF
:TratHoj
set hoj=%1
if %1 LSS 100 set hoj=0%1
if %1 LSS 10 set hoj=00%1
copy %ProyN%000001-a.dwg %ProyN%%cap%%hoj%-a.dwg
goto :EOF

Ya me dirás.

Hola el archivo que me has enviado funciona estupendamente.

No se si se podría añadir esto:

Primera pregunta:

Crear  capitulo independiente s/n =  s  elegimos si

Nombre del proyecto = po-oi-14066-d-

Numero de capitulo = 5

Numero de hojas /capitulo = 2

Crear otro capitulo s/n = n

Y nos tendría que quedar así:

po-oi-14066-d-005001-a.dwg

po-oi-14066-d-005002-a.dwg

y si le dices que s  poder crear mas capítulos

si al principio   de la pregunta:

Crear  capitulo independiente s/n =  n  elegimos no

La ejecución del  bat  que sea igual que lo que me  has enviado.

Esto ya sé que parece raro pero tenemos un gestor de planos que  genera  un archivo dwg cargando delas plantillas de cad tarda unos 3 minutos si multiplicamos por 100 archivos son 300 minutos unas 5 horas esto que has hecho es muchísimo mas rápido.

saludos

Respecto a lo que me comentas de la utilidad de este BAT lo que me sorprende es que solo importen los nombres de los archivos y no los contenidos, pero, en todo caso, me alegro de que el sufrido MSDOS todavía sea capaz de ofrecer soluciones útiles.

Si te he entendido bien esto haría lo que pides:

@echo off
set /p Isn=¨Cap¡tulo independiente (S/N)?
set /p ProyN=Nombre del proyecto:
:Bucle
set /p CapN=N£mero Cap¡tulo (incluido el cero):
set /p HojN=N£mero de hojas/cap¡tulo:
if %Isn%==s goto :CapInd
if %Isn%==S goto :CapInd
set /a CapN=%CapN% - 1
for /l %%c in (0,1,%CapN%) DO (call :TratCap %%c)
goto :EOF
:TratCap
set cap=%1
if %1 LSS 100 set cap=0%1
if %1 LSS 10 set cap=00%1
for /l %%h in (1,1,%HojN%) DO (call :TratHoj %%h)
goto :EOF
:TratHoj
set hoj=%1
if %1 LSS 100 set hoj=0%1
if %1 LSS 10 set hoj=00%1
copy %ProyN%000001-a.dwg %ProyN%%cap%%hoj%-a.dwg
goto :EOF
:CapInd
call :TratCap %CapN%
set /p Mas=¨M s cap¡tulos (S/N)?
if %Mas%==s goto :Bucle
if %Mas%==S goto :Bucle

En las preguntas considero "sí" tanto la "s" como la "S" y "no" cualquier otro valor.

Ya me dirás como va.

Hola, ya lo he probado y funciona fenomenal, solo un pero : la primera preguntaque me hace es:

¿  capitulo independiente (s/n)? ----Perfecto elegimos s

Nombre del proyecto ----- perfecto lo ponemos

Numero capitulo (incluido el cero) ---- se podría quitar de esta pregunta el texto (incluido el cero) creo que has hecho una especie de buqule para usar las mismas preguntas en ambos casos pero creo que en esta opción sobra el texto que te indico.

Saludos

Sí, es como dices, intento reutilizar las preguntas, ¡Vago que es uno!

Incluso llegué a quitar la referencia al cero, pero me parecía que se perdía algo de información. Si te vale sin esa parte del texto solo tienes que editar la línea y borrarle lo que consideres que sobra. Si prefieres personalizarla un poco habría que separar cada una de las dos modalidades un poco más, o un poco antes para que cada opción tenga sus propios mensajes.

Creo que ya puedes continuar tú con lo que falta. Si tienes alguna duda, me preguntas, ¿vale?

hola, voy  ha intentar hacerlo tengo todo el fin de semana por delante y muchas gracias por ofrecerte a contestar mis preguntas un  saludo y otra vez  eternamente agradecido.

Entiendo que la pregunta ya la has dado por cerrada (gracias por la valoración de "excelente"). Sin embargo la página me dice que esta pregunta está pendiente de que conteste. Supongo que es algún error interno, pero voy a contestar a ver que pasa.

Aprovecharé para preguntar si conseguiste que funcionara a tu gusto. Y para insistir en que te sientas totalmente libre de preguntarme cualquier cosa.

Hola, no sabia que al votar se cerraba la pregunta lo tendré en cuenta para próximas veces.

Al final no he hecho nadadeloque te comente de separar las preguntas ya que en el trabajo no lo ven. Al finalhemos puesto mayúsculas y cambiado el texto de alguna pregunta y listo.

@echo off
set /p Isn=¨CAPITULO INDEPENDIENTE (S/N)?
set /p ProyN=NOMBRE PROYECTO:
:Bucle
set /p CapN=NUMERO DE CAPITULO/OS:
set /p HojN=NUMERO DE PLANOS/CAPITULO:
if %Isn%==s goto :CapInd
if %Isn%==S goto :CapInd
set /a CapN=%CapN% - 1
for /l %%c in (0,1,%CapN%) DO (call :TratCap %%c)
goto :EOF
:TratCap
set cap=%1
if %1 LSS 100 set cap=0%1
if %1 LSS 10 set cap=00%1
for /l %%h in (1,1,%HojN%) DO (call :TratHoj %%h)
goto :EOF
:TratHoj
set hoj=%1
if %1 LSS 100 set hoj=0%1
if %1 LSS 10 set hoj=00%1
copy %ProyN%000001-A.dwg %ProyN%%cap%%hoj%-A.dwg
goto :EOF
:CapInd
call :TratCap %CapN%
set /p Mas=¨MAS CAPITULOS (S/N)?
if %Mas%==s goto :Bucle
if %Mas%==S goto :Bucle

Si necesitas que vuelva a votar me lo comentas.

Un saludo y muchas gracias

No, que va. Yo creo que soy yo el que no se ha enterado bien de como funciona ahora la página. Antes del cambio de hace unos meses, para "votar" o "calificar" una pregunta había que cerrarla. Pero parece que ahora no, y creo que está mejor así.

Y no, no quiero que vuelvas a votarla. Más preguntas sobre esto mismo las puedes hacer en este mismo hilo. Si es algo diferente creo que es mejor que abras otro, como ya hiciste en esta ocasión.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas