Ms-Dos - copiar archivos que coincidan en caracteres

 
Vista:
sin imagen de perfil

copiar archivos que coincidan en caracteres

Publicado por [email protected] (7 intervenciones) el 05/12/2014 21:23:48
Tengo en una carpeta muchos archivos llamados 0001, 0002, 0003, 1111, 1112, 1113, 2221, 2222, 2223 los cuales quiero organizar y mover a una carpeta. Esa organización como se puede ver debe ser con los tres primeros caracteres, de tal forma que en una carpeta (000) se encuentren los archivos 0001 0002 0003 y así sucesivamente.

He buscado en varios sitios, sin embargo para Ms-Dos no encuentro nada concreto. Busco la instrucción para decirle que cree una carpeta y que copia a ese lugar los archivos que coincidan en sus tres primeros caracteres

Conozco soluciones parciales en otros lenguajes de programación, pero el interés es poder hacerlo por Ms-Dos para poder automatizar el .bat como una tarea programada.

De antemano muchas gracias.
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

copiar archivos que coincidan en caracteres

Publicado por A.H.H (216 intervenciones) el 08/12/2014 21:18:20
Hola consiste en recorrer la carpeta donde tienes los archivos con el comando For y luego comparar con If
haber si te sirve este ejemplo,

En el ejemplo he puesto una carpeta con archivos dentro del tipo 0001,1111.... en C:\prueba
y he puesto al final del copy que los copie a C\:000, c:\111........

si quieres cambiar las rutas :

debes sustituir donde dice "C:\ prueba" por la ruta donde se encuentra tu carpeta la que contiene tus archivos 0001....y para la copia debes sustituir solamente la C:\ de la cadena "C:\%copia%" donde quieres que queden las carpetas con los archivos copiados ya que el ejemplo lo he hecho en c:\


1
2
3
4
5
6
7
8
9
10
11
12
@echo off
FOR /R "C:\prueba" %%a IN (*.*) DO set ruta=%%a&set datos=%%~nxa&call :separar
pause
goto:eof
:separar
set copia=%datos:~0,3%
if not exist "C:\%copia%" MD "C:\%copia%"
set archivo=%datos%
 
if %archivo:~0,3% EQU %copia% copy "%ruta%" "C:\%copia%"
 
goto:eof
nota:
la /R del for lo hace recursivo osea que mira también si hubiera archivos dentro de subcarpetas dentro de la carpeta origen.

un saludo
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

copiar archivos que coincidan en caracteres

Publicado por [email protected] (7 intervenciones) el 09/12/2014 21:45:43
Muchas gracias funciona de maravilla.
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
sin imagen de perfil

copiar archivos que coincidan en caracteres

Publicado por [email protected] (7 intervenciones) el 10/12/2014 00:52:12
Muchas gracias A.H.H

Dentro de las carpetas creadas voy a correr otro bat que lo que hace es combinar los archivos en uno solo (eso ya lo puedo hacer individualmente y se puede hacer por las características propias de cada archivo)
esa linea seria asi: bmxtranswrap -p -t op1a --ps-avcihead -o 000_OUT 0001 0002 0003 0004
Donde:
000_OUT es la salida de todos combinados
0001 0002 0003 0004 son las entradas

Sin embargo quiero automatizar ese .bat para que me lea todo lo de esa carpeta y ejecute la empaquetada.
Tengo algo como esto:

@echo off
for %%a in (".") do bmxtranswrap -p -t op1a --ps-avcihead -o "new\%%~na" "%%a"


Pero en la carpeta de salida new me salen los mismos archivos 0001 0002 0003 0004 de las entradas y no el 000_OUT

De antemano muchas gracias.
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