Ms-Dos - mover archivos a carpetas con mismo nombre

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 6 puestos en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Martincp (15 intervenciones) el 28/02/2020 19:17:33
Buen día, espero puedan apoyarme ya que trabajo con cantidad de archivos pdf, txt entre otros y quisiera mover masivamente estos a su respectiva carpeta, ejemplo tengo carpetas con la siguiente nomenclatura: 430-3807-9000918
240-1764-9018932

Son 16 caracteres en total 14 en numero y 2 en guion, y los archivos están igualmente nombrados solo que se les agrega al final un sufijo para identificar cada archivo, ejemplo:
430-3807-9000918-PC.pdf
240-1764-9018932-AM.txt

Lo que quisiera es que estos archivos se movieran( no se copien) a su respectiva carpeta, que el bat identificara los 16 caracteres de izquierda a derecha ignorando los sufijos ( 3 caracteres mas -pc) y los relacionara con las carpetas existentes y los moviera a esas carpetas. Estos archivos las tengo en una carpeta origen que seria donde se encuentran los archivos "C:\Users\usuario\Desktop\prueba macro\EJEMPLO BAT\ORIGEN" y el destino donde se encuentran las carpetas "C:\Users\usuario\Desktop\prueba macro\EJEMPLO BAT\DESTINO".

Espero puedan orientarme, muchas gracias.

Saludos.
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 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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 28/02/2020 20:32:27
Aquí lo tienes:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
set Orig=C:\Users\usuario\Desktop\prueba macro\EJEMPLO BAT\ORIGEN
set Dest=C:\Users\usuario\Desktop\prueba macro\EJEMPLO BAT\DESTINO
 
cd "%Orig%"
for %%a in (???-????-???????-*.*) do call :Copiar %%a
goto :EOF
 
:Copiar
    set File=%1
    set Dire=%File:~0,16%
    MD "%Dest%\%Dire%" 2>nul
    move %File% "%Dest%\%Dire%"
    goto :EOF

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
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 14/03/2021 05:04:50
Actualmente tengo el siguiente código que copia cada 21 archivos mp3 dentro de la carpeta que corresponde.

robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (1).mp3" "C:\RADIOS\TECOMAN (1)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (2).mp3" "C:\RADIOS\TECOMAN (2)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (3).mp3" "C:\RADIOS\TECOMAN (3)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (4).mp3" "C:\RADIOS\TECOMAN (4)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (5).mp3" "C:\RADIOS\TECOMAN (5)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (6).mp3" "C:\RADIOS\TECOMAN (6)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (7).mp3" "C:\RADIOS\TECOMAN (7)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (8).mp3" "C:\RADIOS\TECOMAN (8)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (9).mp3" "C:\RADIOS\TECOMAN (9)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (10).mp3" "C:\RADIOS\TECOMAN (10)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (11).mp3" "C:\RADIOS\TECOMAN (11)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (12).mp3" "C:\RADIOS\TECOMAN (12)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (13).mp3" "C:\RADIOS\TECOMAN (13)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (14).mp3" "C:\RADIOS\TECOMAN (14)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (15).mp3" "C:\RADIOS\TECOMAN (15)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (16).mp3" "C:\RADIOS\TECOMAN (16)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (17).mp3" "C:\RADIOS\TECOMAN (17)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (18).mp3" "C:\RADIOS\TECOMAN (18)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (19).mp3" "C:\RADIOS\TECOMAN (19)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (20).mp3" "C:\RADIOS\TECOMAN (20)"
robocopy "C:\\RADIOS\PUBLICIDAD\PROGRAMA (21).mp3" "C:\RADIOS\TECOMAN (21)"

este código copia 21 archivos mp3 dentro de 21 carpetas.

lo que deseo es abreviar el código e ignorar el nombre del archivo y solo tener en cuenta el identificativo que es el numero dentro de los paréntesis al momento de copiarlo.

agradezco mucho su aportación
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 14/03/2021 15:18:30
A este código le falta validar que exista el fichero y el directorio antes de copiar.

1
2
@ECHO OFF
FOR /L %%a in (1, 1 , 100) do copy "C:\RADIOS\PUBLICIDAD\PROGRAMA (%%a).mp3" "C:\RADIOS\TECOMAN (%%a)\."

Esto copia los ficheros del 1 al 100. La barra y el punto del final es para que no copie si no existe el directorio.

Pregunta: ¿Por que usas el ROBOCOPY y no un COPY normal y corriente?

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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 14/03/2021 16:10:27
Probaré el código en win 10 a ver cómo funciona.

Te comento que para comprobar que exista el directorio uso:
if not exist "C:\RADIOS\TECOMAN (21)" md "C:\RADIOS\TECOMAN (21)"
Para cada uno de los directorios si no existe lo crea.

Y uso robocopy por que es más rápido al copiar, también robocopy comprueba si el archivo es el más nuevo de lo contrario no lo copia, si hay un cambio en el archivo si lo copia.

El propósito del código es una tarea programada que lo que hace es Consultar la carpeta de OneDrive si hay archivos nuevos y los copia en la carpeta local en n su respectiva carpeta.

Son 21 archivos que deben ir en 21 carpetas, tanto los archivos como las carpetas se identifica con un número entre paréntesis l final del nombre.
El "archivo (1).MP3" debe ir en la "carpeta (1)"
Y así con cada uno de los 21 archivos.
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 14/03/2021 16:22:53
Una herramienta para copiar es el XCOPY. En él le puedes decir que solo copie si el origen es más nuevo que el destino.

El BAT completo seria este:

1
2
3
4
5
6
7
@ECHO OFF
FOR /L %%a in (1, 1 , 21) do (
    IF exist "C:\RADIOS\PUBLICIDAD\PROGRAMA (%%a).mp3"(
        if not exist "C:\RADIOS\TECOMAN (%%a)\nul" MD "C:\RADIOS\TECOMAN (%%a)"
        Xcopy "C:\RADIOS\PUBLICIDAD\PROGRAMA (%%a).mp3" "C:\RADIOS\TECOMAN (%%a)\." /M
    )
)

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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 14/03/2021 16:41:08
Aquí están las rutas reales de las Carpetas, la que tiene los 21 archivos con diferente nombre pero con el identificativo (1), (2) etc
origen: C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMAS
PRO MARZO 3 COCULA (1).mp3
PRO MARZO 3 COCULA (2).mp3
PRO MARZO 3 COCULA (3).mp3
y la Carpeta destino que contiene las 21 carpetas:
C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA
PROGRAMA COCULA (1)
PROGRAMA COCULA (2)
PROGRAMA COCULA (3)

por algún motivo el código anterior dice que no encontró el archivo programas (%a).mp3
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
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 14/03/2021 18:20:12
hola. probando un poco logre copiar los 21 archivos de cualquier nombre solo identificado su numero entre paréntesis y meterlos dentro de las carpetas correspondientes con el siguiente código

1
2
@ECHO OFF
FOR /L %%a in (1, 1 , 21) do xcopy "C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMAS\*(%%a).mp3" "C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMA COCULA (%%a)\." /M

En las carpetas destino ira un solo archivo, debo asegurarme de lo siguiente:

1 - Antes de copiarse los nuevos 21 archivos en las carpetas destino, se deben borrar los archivos en estas carpetas que tengan mas de 7 días de antigüedad.
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
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 14/03/2021 20:48:19
he logrado mi propósito con tu ayuda, muchas gracias

mi codigo completo es:
1
2
3
4
5
6
7
8
9
10
@ECHO OFF
::elimina archivos viejos mayores a 7 dias de las carpetas de onedrive
FOR /L %%a in (1, 1 , 21) do del /f /q /S "C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMA COCULA (%%a)\."
::elimina archivos viejos mayores a 7 dias de las carpetas locales
FOR /L %%a in (1, 1 , 21) do del /f /q /S "C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA (%%a)\."
::copia los nuevo archivos a las carpetas que corresponde en onedrive
FOR /L %%a in (1, 1 , 21) do Xcopy /S /E "C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMAS\*(%%a).mp3" "C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMA COCULA (%%a)\."
::copia los archivos nuevos de las carpetas de onedrive a las carpetas locales correspondientes
FOR /L %%a in (1, 1 , 21) do Xcopy /S /E "C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMA COCULA (%%a)\." "C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA (%%a)\."
pause
el cidigo funciona solo que elimina todo y vuelve a copiar y lo ideal seria que elimine los archivos mayores a 7 dias, de lo contrario deja el actual y que al copiar, solo copie los archivos nuevos, de lo contrario no copiar.

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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 14/03/2021 23:34:21
El primer FOR elimina todos los ficheros en los directorios:

"C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMA COCULA (*)\."

El segundo FOR elimina todos los ficheros en los directorios:

"C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA (*)\."

Si en el XCOPY copias UN fichero los parámetros /S y /E no tienen sentido. En cambio el /M copia el fichero si es diferente el origen y el destino, bueno en realidad lo que pasa es lo siguiente cuando se crea un archivo o se modifica el atributo ARCHIVO se activa, cuando lo copia el XCOPY con la opción /M mira si el atributo esta activo, copia el fichero y desactiva el atributo el el fichero origen, al realizar un nuevo XCOPY como el atributo esta desactivado no lo copia y solo se activa al modificar el fichero.

Por otro lado quieres guardar los últimos 7 días.

Para eso es un poco más complicado primero tendría que entender que haces.
Preguntas
- ¿En el destino solo hay un fichero en cada directorio?
- Cuando haces la copia ¿Copias siempre los 21 ficheros?
- De cada fichero ¿Quieres guardar varias versiones?
- ¿Cada cuando haces la copia?
- ¿Una o varia veces al día?

Ahora no se me ocurre que más preguntar pero se me cuentas que haces, cada cuanto lo haces, que propósito tiene y yo que se todo lo que se te ocurra para poder entender el funcionamiento te poder ayudar mejor.

Por ejemplo tengo un procedimiento en el que guardo un fichero con la fecha del día y guardo los últimos 200 días o 200 últimos fichero que viene a ser lo mismo, creo uno y borro el más antiguo.
También tengo un proceso que guarda la últimas 10 fechas de un proceso y no son consecutivas, los fines de semana y lo festivos no se procesa.

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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 15/03/2021 05:02:50
Este código hace el trabajo, toma el numero entre paréntesis y lo copia en la carpeta que corresponde.
1
FOR /L %%a in (1, 1 , 21) do xcopy "C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMAS\*(%%a).mp3" "C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA (%%a)\." /M
el problema esta en que cada una de las 21 carpetas debe tener un único archivo, el mas nuevo.
y al ejecutar el código, lo que hace es agregar el archivo nuevo dentro de la carpeta, permaneciendo el archivo el viejo.

lo ideal es que dentro de cada carpeta, se crea el mas nuevo y se borre el más antiguo.
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
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 15/03/2021 06:21:16
también es importante que si no hay archivo nuevo, no deberá borrar el viejo

el siguiente código borra el archivo de mas de 2 días de antigüedad y crea el nuevo, pero faltan algunas validaciones...
1 - si no existe archivo nuevo, no borrara el archivo viejo...
2 - deberá hacer esta validación en todas las 21 carpetas *(%%a)
3 - que la carpeta destino no se quede vacía ya que si se borra el archivo viejo sin validar el archivo nuevo, el parámetro /M estando desactivado NO vuelve a copiar el archivo correspondiente....

te dejo el codigo

1
2
3
@ECHO OFF
forfiles /p "C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA (1)" /M *.mp3 /c "cmd /c Del @file" /d -2
FOR /L %%a in (1, 1 , 21) do xcopy "C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMAS\*(%%a).mp3" "C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA (%%a)\." /M

te agradezco mucho tu ayuda y te digo que voy a remunerarte por tu aportación

uso estos códigos para cambiar la fecha a los archivos y hacer pruebas
1
2
Get-ChildItem "C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA (1)" | % {$_.CreationTime = '12/12/2017 10:00'}
Get-ChildItem "C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA (1)" | % {$_.LastWriteTime = '03/7/2021 10:00'}
muchas gracias nuevamente
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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 16/03/2021 09:26:31
Hola Antoni buenas tardes, me podrías por favor proporcionar un correo dónde contactarte para ver lo de las validaciones de código bat por favor
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 16/03/2021 20:46:38
Esto deberia funcionar:

1
2
3
4
5
6
7
8
9
10
11
@echo off
set Dir_Home=C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO
 
set Dir_Orig=%Dir_Home%\RADIOS\PUBLICIDAD\COCULA\PROGRAMAS\PRO MARZO 3 COCUL
set Dir_Dest=%Dir_Home%\RADIOS\PUBLICIDAD\COCULA\PROGRAMA COCUL
 
FOR /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%A (%%a).mp3" (
       XCOPY /M "%Dir_Orig%A (%%a).mp3" "%Dir_Dest%A (%%a)\."
    )
)

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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 16/03/2021 22:25:04
Hola buenas tardes, le comento que no logre hacer funcionar el código, quiza por que no son las rutas correctas y quizá por que falta el * que indica cualquier nombre y (%%a) toma el numero tanto del archivo como de la carpeta.

dejo las rutas correctas que contienen los archivos y las carpetas.

Origen: "C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMAS\*(%%a).mp3"
Destino: "C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA (%%a)\."

le dejo el código que tiene las rutas correctas y si funciona, pero no tiene las validaciones.

1
2
@ECHO OFF
FOR /L %%a in (1, 1 , 21) do xcopy "C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMAS\*(%%a).mp3" "C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA (%%a)\." /M

tener en cuenta:

1 - Cualquier nombre de la carpeta origen con el *
2- Validar copiar si existe nuevos archivos en origen, de lo contrario NO copiar.
3- Eliminar archivo viejo mayor a 7 dias, pero si no hay archivo nuevo en origen no se borra archivo viejo.
4- este código lo ejecutara una tarea programara en win 10 cada 7 dias
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 16/03/2021 23:22:42
A ver si ahora se acerca un poco más:

1
2
3
4
5
6
7
8
9
10
11
@ECHO OFF
set Dir_Origen=C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAM
 
FOR /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
       if Not exist "%Dir_Dest%A (%%a)\nul"  MD  "%Dir_Dest%A (%%a)"
       forfiles  /p "%Dir_Dest%A (%%a)" /M *.mp3 /c "cmd /c Del @file" /d -7
       XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest%A (%%a)\."
    )
)

Si hay ficheros a copiar
1.- Crea el directorio si no existe
2.- Borra los ficheros con más de 7 días de antigüedad.
3.- Copia los ficheros modificados más recientes.

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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 17/03/2021 01:55:19
hola buenas tardes

logre hacer funcionar el código, solo un detalle, cuando no existe la carpetas en destino, las crea pero me pide:
especifica un archivo o un directorio como destino (F = archivo, D = directorio)?
como podría agregar que es un directorio para que el bat sea automatico?

1
2
3
4
5
6
7
8
9
10
11
@ECHO OFF
set Dir_Orig=C:\Users\Equipo\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\TLAJOMULCO\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA
 
FOR /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
       if Not exist "%Dir_Dest% (%%a)\nul"  MD "%Dir_Dest (%%a)"
       forfiles  /p "%Dir_Dest% (%%a)" /M *.mp3 /c "cmd /c Del @file" /d -6
       XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% (%%a)\."
    )
)
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 17/03/2021 09:35:52
hay un error y por eso no funciona:

1
2
3
4
5
6
7
8
9
10
11
@ECHO OFF
set Dir_Orig=C:\Users\Equipo\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\TLAJOMULCO\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA
 
FOR /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
       if Not exist "%Dir_Dest% (%%a)\nul"  MD "%Dir_Dest% (%%a)"
       forfiles  /p "%Dir_Dest% (%%a)" /M *.mp3 /c "cmd /c Del @file" /d -6
       XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% (%%a)\."
    )
)

En la fila 7 había esto:

1
2
MD "%Dir_Dest (%%a)"
MD "%Dir_Dest% (%%a)" <-- En lugar de esto

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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 18/03/2021 07:01:04
Hola Muchas gracias, voy a probarlo
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
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 25/03/2021 20:44:31
Hola buenas tardes, aun sigo implementando el código gracias a la base que me ha dado.

para mi solución tengo dos codigos:

el primero es este:

1
2
3
4
5
6
7
8
9
10
11
@ECHO OFF
set Dir_Orig=C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA
 
FOR /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
       if Not exist "%Dir_Dest% (%%a)\nul"  MD "%Dir_Dest% (%%a)"
       forfiles  /p "%Dir_Dest% (%%a)" /M *.mp3 /c "cmd /c Del @file" /d -2
       XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% (%%a)\."
    )
)

y el segundo es este:

1
2
3
4
5
6
7
8
9
10
11
@ECHO OFF
set Dir_Orig=C:\Users\Administrador\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\SPOTS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\SPOTS\
forfiles  /p "%Dir_Dest% (%%a)" /M *.mp3 /c "cmd /c Del @file" /d -2
FOR /L %%a in (1,1,10) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (1)"
FOR /L %%a in (11,1,20) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (2)"
FOR /L %%a in (21,1,30) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (3)"
FOR /L %%a in (31,1,40) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (4)"
FOR /L %%a in (41,1,50) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (5)"
FOR /L %%a in (51,1,60) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (6)"
FOR /L %%a in (61,1,70) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (7)"

los dos códigos funcionan bien. l

tengo dos preguntas:

1- El segundo código se puede abreviar?

2 - Si los dos códigos se pueden hacer en un solo código?

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
sin imagen de perfil
Val: 4
Ha aumentado su posición en 6 puestos en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Martin (15 intervenciones) el 16/03/2021 23:51:35
Muchas gracias, funciono de maravilla, 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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 26/03/2021 11:02:51
Los dos códigos se pueden hacer en uno solo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@ECHO OFF
set Dir_Orig=C:\Users\Oscar David Munoz\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA
 
FOR /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
       if Not exist "%Dir_Dest% (%%a)\nul"  MD "%Dir_Dest% (%%a)"
       forfiles  /p "%Dir_Dest% (%%a)" /M *.mp3 /c "cmd /c Del @file" /d -2
       XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% (%%a)\."
    )
)
 
set Dir_Orig=C:\Users\Administrador\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\COCULA\SPOTS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\SPOTS\
forfiles  /p "%Dir_Dest% (%%a)" /M *.mp3 /c "cmd /c Del @file" /d -2
FOR /L %%a in (1,1,10) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (1)"
FOR /L %%a in (11,1,20) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (2)"
FOR /L %%a in (21,1,30) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (3)"
FOR /L %%a in (31,1,40) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (4)"
FOR /L %%a in (41,1,50) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (5)"
FOR /L %%a in (51,1,60) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (6)"
FOR /L %%a in (61,1,70) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (7)"

Me llama la atención un detalle del segundo código:

No es el mismo destino el la línea:

1
forfiles  /p "%Dir_Dest% (%%a)" /M *.mp3 /c "cmd /c Del @file" /d -2

Que el de las lineas de FOR /L

1
2
El primero es..... "C:\RADIOS\PUBLICIDAD\SPOTS\ (%%a)"
Y el segundo es... "C:\RADIOS\PUBLICIDAD\SPOTS\ SPOTS (1)"

El %%a no tiene valor porque debería estar en un FOR y los nombre de las rutas son diferentes.
El FORFILES creo que no encuentra los directorios y ves a saber que hace o que borra.

Creo que lo correcto sería esto:

1
FOR /L %%a (1,1,7) do forfiles  /p "%Dir_Dest% (%%a)" /M *.mp3 /c "cmd /c Del @file" /d -2

Los FOR /L pueden acabar creando un fichero si no existe la ruta para asegurar la jugada siempre es mejor hacerlo así:

1
FOR /L %%a in (1,1,10) do XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% SPOTS (1)\."

¿Los 7 FOR /L se podrían simplificar? Bueno simplificar no es exactamente la palabra.

Se podría hacer de una forma que si fuesen 200 directorios no se tuviese que escribir 200 líneas de código pero simple lo que se dice simple con BAT no hay nada.

Una opción forma de hacerlo (esta probado y funciona)

1
2
3
4
5
6
7
FOR /L %%a in (1,1,7) do call :Copiar %%a
goto :EOF
 
:Copiar
    set /A desde=%1 * 10 - 9
    set /A hasta=%1 * 10
    FOR /L %%b in (%Desde%,1,%Hasta%) do XCOPY /M "%Dir_Orig%\*(%%b).mp3" "%Dir_Dest% SPOTS (%1)")

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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 09/04/2021 20:57:57
Hola saludos, quiero agradecer a todas las aportaciones,muchísimas gracias.

He implementando el código y sigo aprendiendo mucho.

Mi codigo es el siguiente:
1
2
3
4
5
6
7
8
9
10
@ECHO OFF
set Dir_Orig=C:\Users\Administrador\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\ZAYULA\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA
FOR /L %%a in (1, 1 , 21) do del /f /q /s "%Dir_Dest% (%%a)"
FOR /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
       if Not exist "%Dir_Dest% (%%a)\nul"  MD "%Dir_Dest% (%%a)"
       XCOPY /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% (%%a)\."
    )
)

Este código se ejecuta dos veces a dia como tarea programada en windows.
lo que hace es que borralas el contenido de las 21 carpetas y vuelve a copiar en cada una el cada archivo mp3.

mi pregunta es: a este código se le puede agregar la condición: si en origen hay un cambio, entonces ahí si borre en destino para que siempre esté actualizado destino?

a "do del" se le puede poner /M para que solo borre en destino siempre y cuando haya un cambio en origen?

así por ejemplo:

1
FOR /L %%a in (1, 1 , 21) do del /M /f /q /s "%Dir_Dest% (%%a)"

no se si me doy a entender, pero básicamente la idea es que siempre esté el archivo más reciente sin necesidad de borrar y volver a copiar.
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 09/04/2021 21:44:30
Este cambio hace lo que quieres.
El parámetro /M del del no existe
El parámetro /S no es necesario porque no hay subdirectorios
El parámetro /F no es necesario porque no hay archivos con el atributo solo lectura (creo pero lo dejo)

¿Que hace?
Si existe un fichero en el origen para copiar:
- Crea el directorio si no existe
- Borra el contenido
- Copia el fichero

El parámetro /M del XCOPY hace que solo copie los ficheros modificados.
El DEL no puede saber si hay ficheros modificados.


1
2
3
4
5
6
7
8
9
10
11
@ECHO OFF
set Dir_Orig=C:\Users\Administrador\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\ZAYULA\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA
 
FOR /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
        if Not exist "%Dir_Dest% (%%a)\nul"  MD "%Dir_Dest% (%%a)"
        del /F /Q "%Dir_Dest% (%%a)"
        xcopy  /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% (%%a)\."
    )
)

Aquí el problema es saber que copias, y me refiero a si los ficheros se llaman siempre igual.
Cuantos ficheros tienen el mismo número.
Que es lo que quieres hacer.

Me explico: Si tengo tres ficheros

Audio_1.mp3
Audio_2.mp3
Audio_3.mp3

Hago una copia en las carpetas 1, 2 y 3 cada uno a su respectiva carpeta
Modifico el Audio_2.mp3 y lo copio a la carpeta 2 si borrar

En la carpeta 1 siempre tendré el último Audio_1.mp3
En la carpeta 2 siempre tendré el último Audio_2.mp3
En la carpeta 3 siempre tendré el último Audio_3.mp3

Y así con todos.

Ahora bien si tengo los ficheros:

Audio_A_1.mp3
Audio_B_1.mp3
Audio_C_1.mp3

Hago una copia en la carpeta 1 y tengo los tres audios

Al día siguiente Creo Audio_D_1.mp3.

puedo hacer dos cosas:

1.- Borrar la carpeta 1, copiar el fichero y solo tendré el Audio_D_1.mp3.

2.- Copiar el fichero y tendré la ultima versión de:

Audio_A_1.mp3
Audio_B_1.mp3
Audio_C_1.mp3
Audio_D_1.mp3

¿Ya no quiero tener los anteriores? Yo no lo se me lo tienes que explicar tú.

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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 09/04/2021 22:10:47
Hola de nuevo,

el código siguiente efectivamente copia en cada directorio destino de manera correcta.
1
2
3
4
5
6
7
8
9
10
11
@ECHO OFF
set Dir_Orig=C:\Users\Administrador\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\ZAYULA\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA
 
FOR /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
        if Not exist "%Dir_Dest% (%%a)\nul"  MD "%Dir_Dest% (%%a)"
        del /F /Q "%Dir_Dest% (%%a)"
        xcopy  /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% (%%a)\."
    )
)

pero si lo vuelvo a ejecutar borra el contenido de las carpetas destino y las deja vacías...
(no deben estar vacías)

Respondiendo tus preguntas:

los ficheros se llaman siempre igual: si. se identifican con el número entre paréntesis.
Cuantos ficheros tienen el mismo número: un único archivo.
Qué es lo que quieres hacer: Que cada vez que ejecute el .bat en carpeta destino solo deberá haber un solo archivo y este deberá ser la última versión.
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 10/04/2021 00:13:47
Con esta versión se cumple tus necesidades:

1
2
3
4
5
6
7
8
9
10
@ECHO OFF
set Dir_Orig=C:\Users\Administrador\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\ZAYULA\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA
 
FOR /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
        if Not exist "%Dir_Dest% (%%a)\nul"  MD "%Dir_Dest% (%%a)"
        xcopy  /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% (%%a)\."
    )
)

De hecho si los directorios ya existen o puedes asegurar que siempre van a existir se puede simplificar:

1
2
3
4
5
6
7
8
9
@ECHO OFF
set Dir_Orig=C:\Users\Administrador\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\ZAYULA\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA
 
FOR /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
        xcopy  /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% (%%a)\."
    )
)

En los destinos siempre tendrás la ultima versión.
El Xcopy solo copia si se ha modificado.
Al copiar elimina el anterior y en el destino siempre tendrás el ultimo copiado.

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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 12/04/2021 22:32:02
Hola buenas tardes, le comento que efectivamente el código funciona, pero en destino me quedan dos archivos.

por ejemplo:
en la carpeta "destino" dentro de Programa(1) está archivo(1).mp3
Y cuando actualizo el archivo en "origen" y pongo archivonuevo(1).mp3

En destino programa(1) tengo dos archivos con el identificador (1); el más actual se copia pero no se borra el viejo. Y debe quedar en destino el solo un archivo, más nuevo.

La idea de ponerle un identificador a cada archivo (1), (2), (3) etc ... es con la idea de que siempre identifique este achivo independientemente del nombre.
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 12/04/2021 23:19:06
Para hacer esto primero hay que copiar todos los archivos y después dejar solo el ultimo.
Tengo una línea de comando que hace esto ultimo, en mi caso dejaba los últimos 200 ficheros, pero es solo cambiar un número.
Mañana lo buscare y montare el nuevo BAT.

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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 13/04/2021 11:24:52
Este es el proceso:

1
2
3
4
5
6
7
8
9
10
11
12
13
@ECHO OFF
set Dir_Orig=C:\Users\Administrador\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\ZAYULA\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA
 
For /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
        xcopy  /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% (%%a)\."
 
        dir /B /O-D "%Dir_Dest% (%%a)\*.mp3" >%Dir_Orig%\@_Borrar.tmp
        For /F "skip=1 delims=*" %%b a in (%Dir_Orig%\@_Borrar.tmp) do del "%Dir_Dest% (%%a)\%%b"
        del %Dir_Orig%\@_Borrar.tmp
    )
)

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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 13/04/2021 20:00:19
Hola Antoni saludos desde méxico

implemente el código pero por alguna razón no hace nada, incluso le puse "pause" al final pero y no sale nada ni errores ni nada
lo probe en win 10
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 13/04/2021 23:46:36
Cambia el @ECHO OFF por un @ECHO ON y añade un PAUSE al final y podrás ver que hace.

Deberías ver que ha borrado el fichero más antigua donde tuviese 2 ficheros.

De hecho si copia deberías ver esto: 1 archivo(s) copiado(s), como el XCOPY tiene el /M solo copia si hay ficheros nuevos o modificados.

Una forma de ver si hay ficheros a copiar es usando el comando:

1
ATTRIB *.mp3

Tendria que ver algo asi:

1
2
3
4
C:\Download\AVI>ATTRIB *.mp3
A                    C:\Videos\File_1.mp3
A                    C:\Videos\File_2.mp3
A                    C:\Videos\File_3.mp3

Si no tiene la 'A' de la izquierda no lo copia. Para activar el atributo y forzar la copia:

1
ATTRIB +a *.mp3

Si todo esto no da una solución, con la modificación de arriba, el @ECHO ON y desde una ventana cd CMD ejecutar

1
2
C:\ATTRIB "%Dir_Orig%\*.mp3" >  C:/Temp/Fichero.txt 2>&1
C:\> Proceso.bat             >> C:/Temp/Fichero.txt 2>&1

Proceso.bat es el nombre de tu BAT.
Esto crea el fichero y guarda todo lo que se tiene que copiar y lo que dice el BAT, me lo envías y veré que puede estar pasando.

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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 15/04/2021 05:49:32
Hola buenas Antoni saludos

te comento que he intentado probar lo que mencionas pero sin resultados.
no te comprendí bien lo de hacerlo en cmd ya que la ruta no existe
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 15/04/2021 13:46:38
En el escritorio de Windows pulsa la Tecla de Windows + R escribe CMD y pulsa el botón aceptar.
Se tiene que abrir una ventana negra con un texto parecido a este:

1
2
3
4
Microsoft Windows [Versión 10.0.19041.928]
(c) Microsoft Corporation. Todos los derechos reservados.
 
C:\Users\User>

Escribe CD \ y a continuación el nombre del directorio donde tengas el BAT y a qui ya puedes ejecutar los comandos que te comente arriba.

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
sin imagen de perfil
Val: 57
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

mover archivos a carpetas con mismo nombre

Publicado por Diever (19 intervenciones) el 16/04/2021 22:03:45
Hola Antoni saludos

le comento que realice los pasos pero dice que el sistema no puede encontrar la ruta.
disculpe mi ignorancia en el tema.
1
2
3
4
5
6
7
8
9
10
11
12
13
@ECHO OFF
set Dir_Orig=C:\Users\Administrador\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\ZAYULA\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA
 
For /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
        xcopy  /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% (%%a)\."
 
        dir /B /O-D "%Dir_Dest% (%%a)\*.mp3" >%Dir_Orig%\@_Borrar.tmp
        For /F "skip=1 delims=*" %%b a in (%Dir_Orig%\@_Borrar.tmp) do del "%Dir_Dest% (%%a)\%%b"
        del %Dir_Orig%\@_Borrar.tmp
    )
)

sera algun error en el codigo?
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 17/04/2021 01:10:00
Ejecute este código y envíeme lo que salga en la pantalla.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@ECHO ON
set Dir_Orig=C:\Users\Administrador\OneDrive\RADIOTIEMPO\RADIOS\PUBLICIDAD\ZAYULA\PROGRAMAS
set Dir_Dest=C:\RADIOS\PUBLICIDAD\PROGRAMAS\PROGRAMA
 
For /L %%a in (1,1,21) do (
    if exist "%Dir_Orig%\*(%%a).mp3" (
        xcopy  /M "%Dir_Orig%\*(%%a).mp3" "%Dir_Dest% (%%a)\."
 
        dir /B /O-D "%Dir_Dest% (%%a)\*.mp3" >%Dir_Orig%\@_Borrar.tmp
        For /F "skip=1 delims=*" %%b a in (%Dir_Orig%\@_Borrar.tmp) do del "%Dir_Dest% (%%a)\%%b"
        del %Dir_Orig%\@_Borrar.tmp
    )
)
PAUSE

Sin ver lo que mensajes muestra no puedo darle una solución.

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

mover archivos a carpetas con mismo nombre

Publicado por pablo bautista (3 intervenciones) el 09/02/2022 04:59:12
Hola estimado ingeniero tengo una pregunta este código me funciono sin embargo trate de limitarlo con el fin de que no copie archivos si no tiene una carpeta o directorio de destino con ese mismo nombre pero no lo consigo. podrías ayudarme por favor

@echo off
set Orig=C:\Users\CASA\Downloads\prueba\origen
set Dest=C:\Users\CASA\Downloads\prueba\destino

cd "%Orig%"
for %%a in (?-????-???????.*.*) do call :Copiar %%a
goto :EOF

:Copiar
set File=%1
set Dire=%File:~0,12%
MD "%Dest%\.%Dire%" 2>=nul
move %File% "%Dest%\.%Dire%"
goto :EOF
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 09/02/2022 14:21:16
No entiendo que es lo que estas haciendo y que es realmente lo que quieres hacer.

Parto de que en origen se tiene los fichero:

1
2
3
A-BCDE-FGHIJKL.MNOP.QRS1
A-BCDE-FGHIJKL.MNOP.QRS2
A-BCDE-FGHIJKL.MNOP.QRS3

que es la estructura que hay en el FOR

1
2
3
4
5
6
7
C:\Tmp>zz
MD "C:\Tmp\destino\.A-BCDE-FGHIJ"
move A-BCDE-FGHIJKL.MNOP.QRS1 "C:\Tmp\destino\.A-BCDE-FGHIJ"
MD "C:\Tmp\destino\.A-BCDE-FGHIJ"
move A-BCDE-FGHIJKL.MNOP.QRS2 "C:\Tmp\destino\.A-BCDE-FGHIJ"
MD "C:\Tmp\destino\.A-BCDE-FGHIJ"
move A-BCDE-FGHIJKL.MNOP.QRS3 "C:\Tmp\destino\.A-BCDE-FGHIJ"

Crear un directorio con un punto y los 12 primeros caracteres del nombre antes de mover el fichero.
Si intentas crear el directorio exista o no siempre existirá.

Si lo que quieres hacer es copiar solo si existe en directorio destino:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
set Orig=C:\Users\CASA\Downloads\prueba\origen
set Dest=C:\Users\CASA\Downloads\prueba\destino
 
set Orig=C:\Tmp\origen
set Dest=C:\Tmp\destino
 
cd "%Orig%"
for %%a in (?-????-???????.*.*) do call :Copiar %%a
goto :EOF
 
:Copiar
   set File=%1
   set Dire=%File:~0,12%
   if exist "%Dest%\.%Dire%\nul" move %File% "%Dest%\.%Dire%"
   goto :EOF

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

mover archivos a carpetas con mismo nombre

Publicado por pablo bautista (3 intervenciones) el 10/02/2022 01:38:22
discúlpame ingeniero te pongo en el contexto indicado.

resumen: a diario me llegan varias carpetas nombradas con una cadena de letras y números y guiones ejemplo S-2022-23987 - F-2022-78907, y en otra carpeta existen archivos individuales nombrados con la parte que arranca con F en este ejemplo seria un documento llamado F-2022-78907. y en este caso debo mover el archivo F-2022-78907 a la carpeta S-2022-23987 - F-2022-78907 siempre y cuando exista el directorio de destino y si no existiera no lo mueva.

Carpeta vacía ------------------------------archivo individual --------------------resultado esperado

S-2022-23987 - F-2022-78907--------- F-2022-78907 --------------------S-2022-23987 - F-2022-78907 (carpeta)
------------------------------------------------------------------------------------------ F-2022-78907 (documento esperado que contenga la carpeta)

Nota: los números que siguen después del ultimo guion pueden contener mas o menos caracteres ejemplo: carpetas

S-2022-23987 - F-2022-78907 o S-2022-3987 - F-2022-78907 o S-2022-23987 - F-2022-7890765

razón de esto : Es porque gasto mas de media jornada ubicando y moviendo archivo por archivo a su carpeta correspondiente dado que es una oficina de correspondencia y llegan mas de 500 archivos para organizar de la misma manera todos los dias.

Ingeniero espero haberme explicado bien y muchas gracias por estan tan pendiente y responder mis dudas tan rapido
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

mover archivos a carpetas con mismo nombre

Publicado por pablo bautista (3 intervenciones) el 10/02/2022 02:16:56
omite si quieres este comentario es solo para darte gracias dado que si me sirve este que me compartes para una parte y el punto central de lo que pretendo ya te lo explique en el otro comentario.

por el momento puedo usar este para carpetas que arranquen con solo F, muchas gracias y ya seria validar como hacer que valide la carpeta de destino si tiene un nombre que no sea exactamente igual.

Es tu código sin generar nuevo directorio.

@echo off
set Orig=C:\Users\CASA\Downloads\prueba\origen
set Dest=C:\Users\CASA\Downloads\prueba\destino


cd "%Orig%"
for %%a in (?-????-???????.*.*) do call :Copiar %%a
goto :EOF

:Copiar
set File=%1
set Dire=%File:~0,12%
if exist "%Dest%\%Dire%" move %File% "%Dest%\%Dire%"
goto :EOF
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

mover archivos a carpetas con mismo nombre

Publicado por JHONATAN TENO (1 intervención) el 24/06/2022 15:35:17
Buen dia, tengo un asunto:
quiero enviar unos Archivos PDF ya renombrados, a carpetas con el mismo nombre, segui los paso pero no me deja:
La direccion donde tengo los archivos es: C:\Users\cex12\Desktop\Nueva carpeta (3)
y donde los quiero enviar es a la direccion: C:\Users\cex12\Desktop\Nueva carpeta (2)\2\15-06-2022

OJO: la capeta que contiene los PDF tiene archivos que no necesito mandar a las carpetas, solo quiero enviar los PDF del misno nombre a las carpetas del mismo nombre, y los que no coincidan con el nombre, que no se envien.

Mil 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
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 27/06/2022 15:23:02
Que es lo que tienes hecho.
Envíamelo y le doy un vistazo.

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

mover archivos a carpetas con mismo nombre

Publicado por Omar hernandez (1 intervención) el 25/03/2022 17:57:03
Buenos dias.

En primera agradezco la ayuda que brinda y me gustaria hacerle una consulta.

Hay forma de pegar un archivo en varias carpetas con distinto nombre e igual subdirectorio?

por ejemplo:
@echo off
for /D %%a in ("C:\Users\ohernandezr\Desktop\pruebas\04*\mio") do xcopy /y /d C:\Users\ohernandezr\Desktop\pruebas\prue*.* "%%a"
pause>nul

DONDE: 04* seria la carpeta que cambia de nombre
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

mover archivos a carpetas con mismo nombre

Publicado por Iván Medrano (1 intervención) el 20/07/2022 20:17:03
Buenas tardes, quisiera saber si me puede apoyar con lo siguiente

Mover archivos (cientos) que tengo en una carpeta a otra carpeta con su nombre pero hay archivos que tienen el mismo nombre pero son diferentes, los cuales tienen que quedar en la misma carpeta, por ejemplo tengo estos archivos:

"C:\Users\Admin\Documents\TI\CESAR RAMIREZ GARCIA 1 (2).pdf"
"C:\Users\Admin\Documents\TI\CESAR RAMIREZ GARCIA 1.pdf"
"C:\Users\Admin\Documents\TI\CRISTIAN MICHEL DELFIN VAZQUEZ 1.pdf"
"C:\Users\Admin\Documents\TI\EDUARDO ROSALES JIMENEZ 0 (2).pdf"
"C:\Users\Admin\Documents\TI\EDUARDO ROSALES JIMENEZ 0.pdf"
"C:\Users\Admin\Documents\TI\EDUARDO ROSALES JIMENEZ 1 (2).pdf"
"C:\Users\Admin\Documents\TI\EDUARDO ROSALES JIMENEZ 1.pdf"
"C:\Users\Admin\Documents\TI\EDUARDO ROSALES JIMENEZ 3.pdf"
"C:\Users\Admin\Documents\TI\EMILIO JOSE ALARCON FLORES 1 (2).pdf"
"C:\Users\Admin\Documents\TI\EMILIO JOSE ALARCON FLORES 1.pdf"
"C:\Users\Admin\Documents\TI\ESTEBAN CABAÑAS CUETO 1 (2).pdf"
"C:\Users\Admin\Documents\TI\ESTEBAN CABAÑAS CUETO 1.pdf"

Y los quiero mover a cada carpeta con su nombre

"C:\Users\Admin\Documents\Info\CESAR RAMIREZ GARCIA"
"C:\Users\Admin\Documents\Info\CRISTIAN MICHEL DELFIN VAZQUEZ"
"C:\Users\Admin\Documents\Info\EDUARDO ROSALES JIMENEZ"
"C:\Users\Admin\Documents\Info\EMILIO JOSE ALARCON FLORES"
"C:\Users\Admin\Documents\Info\ESTEBAN CABAÑAS CUETO"
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

mover archivos a carpetas con mismo nombre

Publicado por Antoni Masana (811 intervenciones) el 21/07/2022 08:07:24
Es un problema difícil de solucionar con un BAT.
Si las carpetas destino ya existen quizas se podria hacer alguna cosa, pero si se tienen que ir creando la cosa ya se complica por que los BAT no es la mejor herramienta para esta clase de problemas.

Existe un programa que se llama AWK.EXE que es una herramienta de Linux para Windows que podría servir.
Otra herramienta para este problema es el PYTHON.

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

mover archivos a carpetas con mismo nombre

Publicado por Sergi (4 intervenciones) el 26/07/2022 16:09:13
Buenas tardes, yo tengo un problema parecido. Tengo muchas fotos y he creado un bat para almacenarlas por año y todo bien. Pero me he dado cuenta que si dos fotos en diferentes carpetas tienen el mismo nombre solo se copia una a la nueva. Hay alguna manera de que copie las dos imágenes y renombre una de ellas?

Este es el de prueba para ver que no se copian

1
2
3
4
5
6
7
set origen1=C:\Users\pipi\Desktop\A
set origen2=C:\Users\pipi\Desktop\B
set destino=C:\Users\pipi\Desktop\C
 
robocopy %origen1% %destino% /S /R:2 /W:5
robocopy %origen2% %destino% /S /R:2 /W:5
echo fin

Este es el código que uso

1
2
3
4
5
FOR /L %%g IN (2015 1 2023) DO (
robocopy %origen% %destino%\fotos\%%g /MINAGE:%%g1231 /MAXAGE:%%g0101 /S /MIN:1000 /IF *.jpg *.HEIC *.PNG *.BMP /MOVE
robocopy %origen% %destino%\videos\%%g /MINAGE:%%g1231 /MAXAGE:%%g0101 /S /MIN:5000 /IF *.MOV *.MP4 *.3GP *.AVI *.MPG /XD /MOVE
robocopy %origen% %destino%\revisar /S /XF *.MOV *.MP4 *.3GP *.JPG *.HEIC *.AVI *.BMP *.PNG *.MPG /MOVE
)


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

mover archivos a carpetas con mismo nombre

Publicado por Martincp (15 intervenciones) el 27/11/2023 22:38:20
Buena tarde, por favor su valioso apoyo, ya que ha dejado de funcionar el archivo .BAT para mover los archivos, desconozco la razón por la cual dejo de funcionar, pero al ejecutar el archivo no realiza nada, lo ejecuto en drive y en escritorio y no funciona, lo raro es que tengo otros códigos que si se ejecutan sin problema. Tengo Windows 10, comparto el código:

@echo off
set Orig=G:\Mi unidad\Martin Colin\2. EK Expediente Digital\EXPEDIENTE DIGITAL IMPO-EXPO 2023\IMPORTACIÓN\HCMV\ENERO
set Dest=G:\Mi unidad\Martin Colin\2. EK Expediente Digital\EXPEDIENTE DIGITAL IMPO-EXPO 2023\IMPORTACIÓN\EXPEDIENTE DIGITAL\ENERO

cd "%Orig%"
for %%a in (???-????-???????*.*) do call :Copiar %%a
goto :EOF

:Copiar
set File=%1
set Dire=%File:~0,16%
MD "%Dest%\%Dire%" 2>nul
move %File% "%Dest%\%Dire%"
goto :EOF


Espero puedan apoyarme, 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