Igualar en numero de archivos varias carpetas

No se si se podrá hacer, pero estoy intentando hacer un archivo bat que me iguale el numero de archivos de 2 carpetas. Tengo la carpeta 1 con los archivos 001.dwg 002.dwg... Así hasta el 400.dwg y la carpeta 2 con los archivos 001.pdf 002.pdf... Así hasta 300.pdf por ejemplo. Los archivos dwg de la carpeta 1 siempre son 400 y del mismo tipo. Y los pdf de la carpeta 2 pueden variar unas veces serán 300 otras 100... Siendo del mismo tipo pdf. Teniendo en cuenta que el nº de archivos dwg tienen que ser igual que los pdf de la carpeta 2 ¿se podría hacer un archivo bat?

1 respuesta

Respuesta
1

No sé si entiendo bien lo que quieres. Voy a decir lo que me ha parecido entender y me corriges.

  1. Hay dos carpetas, digamos DWG y PDF
  2. En un momento dado (cuando ejecutes el BAT) quieres que los archivos de la carpeta DWG, en lugar de ser los 400 que hay en ese momento, sean tantos como los que haya en ese momento en la carpeta PDF y además que sus nombres sean numéricos correlativos desde 001.dwg hasta nnn.dwg, siendo nnn el número más alto de los archivos que hay en ese momento en la carpeta PDF.
  3. Los archivos que sobren en la carpeta DWG (desde nnn+1.dwg hasta 400.dwg) se deben borrar. Los demás (de 001.dwg a nnn.dwg) se dejan como estaban.

Una vez que me entere bien de lo que pretendes podríamos pasar a intentar crear el BAT correspondiente. Yo creo que sí que es posible.

Hola, si así es comomeloexplicas.

Muchas gracias

Pues prueba este BAT. Para evitar confusiones entre las carpetas y las extensiones de los archivos he llamado a las carpetas CARPDWG y CARPPDF. Tendrás que corregir las líneas en las que aparecen para ajustarlas a tus necesidades.

@echo off
for /f %%i in ('dir /b /o-n c:\carppdf\*.pdf ^| find /n "pdf" ^| find "[1]"') do (call :MaxNom %%~ni)
:MaxNom
if "%1"=="" goto :EOF
set nommax=%1
set nommax=%nommax:~3%
for /f %%i in ('dir /b /o-n c:\carpdwg\*.dwg') do (call :Borrado %%i)
goto :EOF
:Borrado
set nombre=%~n1
if %nombre% GTR %nommax% del c:\carpdwg\%1
goto :EOF

Si necesitas alguna aclaración, tienes alguna duda o no funciona como esperabas solo tienes que decirlo.

Hola, muchas gracias por el código funciona perfectamente.

Permíteme abusar un poco más de ti, ya que has sido el único que ha conseguido hacer este bat, no sabemos como elegir las opciones de un programa y si se puede.

En la  pagina   http://sheelapps.com/index.php?p=PDFTools.HomePage&action=view

Esta el programa PDFTOOLS que es FREE por eso lo tenemos en el trabajo.

La idea que tenemos es poder acceder ha este programa mediante un bat y seleccionar las opciones que nos interesan. Aparecen las ventanas del programa

En el link que he añadido.

Ejecutamos el programa desde un acceso directo y aparece esta ventana (feactures)

Elegimos la opción Split a pdf y aparece la ventana

(Split PDF :) rellenamos:

-source  pdf file = c:/2/0.pdf

-output directory = c:/2

y  elegimos en:

options y elejimos:

- split  each page to  new pdf (bust)

Esto es lo queremos hacer con bat pero aparte de que no lo conseguimos no sabemos si se puede.

Nos puedes echar una mano

Y muchas gracias por todo

Le he echado un vistazo al programa (que parece realmente interesante) pero no veo que tenga la posibilidad de ejecutarse en lo que se suelen llamar "comandos en línea" o "línea de comandos". Es raro porque no parece ser muy difícil habilitar esa opción una vez que tienes desarrollado el programa, puesto que en el fondo es solo otra manera de pasar los parámetros. Lo tradicional es ir a la carpeta en la que se ha instalado y lanzar el programa sin parámetros, o añadiendo algo como "/?" o "-h" o "-help". Pero no he conseguido que arranque si se añade algo a la invocación. He visto en el Home de la página que me has pasado que hay una forma de pedir cosas al desarrollador (Issue tracker) y en ella he encontrado una petición de un tal Mariano precisamente sobre esta modalidad (con issue id 18001 del 13/01/2012) lo que me hace pensar que efectivamente no está desarrollada esa opción.

Por tanto creo que a día de hoy no podréis trabajar con él desde un BAT.

lo mismo que pensabamos nosotros. 

muchas gracias  por todo cierro ests pregunta y voto

saludos

Hola otra vez,perdona por no haber  terminado imaginemos que tenemos en  m la carpeta M:\CARPDWG y laqueremoscopiar C:\ con el mismo nombre y al copiarla que  tenga el  mismo  numero  de archivos C:\CARPPDF

igual que en el anterior enlacarpeta M:\CARPDWG el nº de archivos hasta  400 empezando en el 001.dwg...hasta 400.dwg  y en la carpeta C:\CARPPDF un nº aleatorio de archivos PDF cada vez pero el nombre igual  que en  M:\CARPDWG

001.PDF....010.PDF por ejemplo. Igual que en   el anterior bat pero que copie la carpeta que esta en M: en C: con el mismo numero de archivos que los que hay en C:\CARPPDF

saludos

No te preocupes.

Si te he entendido bien lo único que hay que hacer es copiar la carpeta M:\CARPDWG sobre C:\CARPDWG antes de ejecutar el resto del código, asegurándose de que machaque lo que hubiera si ya tenía el mismo nombre. Esto puede conseguirse con el siguiente comando:

XCOPY /S /I /Y M:\CARPDWG C:\CARPDWG

Que se pondría después de la primera línea "@echo off".

Dime si así vale y si no vale cuéntame por qué no vale.

Hola esta intentándolo con copy y no funcionaba no me acordaba del comando xcopy

Funciona perfectamente el código que me has enviado.

Saludos y muchas gracias.

Muy bien. Me alegro.

Holaotra vez como lo estamos haciendo ha tronpicones nos aparecenlaspreguntasdesordenadas.

Se podría simplificar esto. renumeramos hasta 500 archivosynos sale un código muy largo.

rename "C:\2\0_001.pdf" "001.pdf"
rename "C:\2\0_002.pdf" "002.pdf"
rename "C:\2\0_003.pdf" "003.pdf"
rename "C:\2\0_004.pdf" "004.pdf"
rename "C:\2\0_005.pdf" "005.pdf"
rename "C:\2\0_006.pdf" "006.pdf"
rename "C:\2\0_007.pdf" "007.pdf"
rename "C:\2\0_008.pdf" "008.pdf"
.....................

.....................

rename "C:\2\0_499.pdf" "499.pdf"
rename "C:\2\0_500.pdf" "500.pdf"

Saludos

Prueba con esto:

@echo off
for /l %%n in (1,1,500) DO (call :Renomb %%n)
goto :EOF
:Renomb
if %1 LSS 10 rename "C:\2\0_00%1.pdf" "00%1.pdf"&goto :EOF
if %1 LSS 100 rename "C:\2\0_0%1.pdf" "0%1.pdf"&goto :EOF
rename "C:\2\0_%1.pdf" "%1.pdf"

Te sugiero que si sigues haciendo preguntas sobre distintos temas, aunque estén relacionados, abras una por cada tema concreto. No es que me importe mucho que sigas haciéndolo así, pero una de las utilidades de esta página es que la gente que busque ayuda para un problema en la red la pueda encontrar si el problema ya se planteó y resolvió anteriormente. Por ponerte un ejemplo concreto, hace poco tiempo (el 22 de octubre para ser exactos) una persona me pidió ayuda en esta página para abrir el cajón monedero asociadeo a una impresora Epson TMU-220B porque había visto en la red que hacía más de un año que había ayudado a otra persona con ese mismo problema.

Ya me contarás si ha funcionado.

Hola ya estoy aquí, estado liado en el trabajo y no he tenido tiempo para nada.

Comentarte que funciona estupendamente y tomo nota de abrir varios temas

En el foro.

Muchísimas gracias por todo un saludo

Perfecto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas