Ms-Dos - Ayuda con bat

 
Vista:

Ayuda con bat

Publicado por Santiago C. (5 intervenciones) el 08/12/2022 02:00:12
Hola. Necesito un bat que me coja los archivos que se crearon ayer durante todo el dia y los mueva a una carpeta en red cuyo nombre sea la fecha en la que se ejecuta el bat.

Esta segunda parte la tengo resuelta, pero lo de que copie los archivos de ayer... mae mia... creo que se necesta un ordenador cuántico o algo asi... he leido telany no saco nada en claro....

Tengo una carpeta que recoge archivos de una camara durante las 24h del dia y quiero ir guardandolos organizados por fecha en otra carpeta que esta ennla red... solo eso... hasta ahora lo hacia con un robocopy copiandolo todo programado a una hora. Pero si a esa hora se estaba generando un video... a tomar por saco, colapso y paron de grabaciones...

Lo suyo si es que se puede, sea con un robocopy, ya que lo tengo con un procramita que me busqué que lee el log que genera el robocopy y si hay errores me manda un correo...

Por favor... ayudenme!!!! Help me please!! Tanke, 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 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

Ayuda con bat

Publicado por Antoni Masana (811 intervenciones) el 08/12/2022 15:41:51
Hay varias opciones.

- Una de ellas es el XCOPY
- EL comando FOR
- El comando ROBOCOPY
- El comando FORFILES.

Si tienes bien resuelto el saber la fecha de ayer ya tienes el 50% del problema resuelto.

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

Ayuda con bat

Publicado por Santiago (5 intervenciones) el 08/12/2022 16:10:04
HOla, gracias por tu interés antes que nada pero no me he explicado bien y además, esta noche dádole vueltas me he dado cuenta de que lo que pretendía no puede ser...

Cuando decía que la parte de la carpeta tiene el nombre como fecha lo tenía resuelto... ejejejejej... nooooo, creía que lo tenía resuelto pero se ha convertido en un problema...

A ver... yo hasta ahora uso un robocopy en el que tengo la Fecha generada así:

TIME /T > "%TEMP%\Hora.txt"
SET /P Hora=<"%TEMP%\Hora.txt"
SET Fecha=%date:~6,4%-%date:~3,2%-%date:~0,2%---%Hora:~0,2%-%Hora:~3,2%
DEL "%TEMP%\Hora.txt"

por lo que si creo mkdir ......\%Fecha% como destino me crea la carpeta con el nombre fecha de ese momento (que me valdría) y he aquí lo que creía que lo tenía resuelto... pero ahora me he dado cuenta que no es una sóla cámara, son 16 y todas graban en su carpeta personal que a su vez estan todas contenidas en una raíz. Entonces yo decía bueno hago 16 lineas y cada una con su ruta de carpeta de origen y destino y listo... pero claro el %Fecha% de la primera no va a ser la misma que de la tercera (por el tiempo que tarda en copiar el contenido diario de cada cámara que son unos 1000 archivos cada una) y mucho menos la última... así que mojón de pato para mi...

estoy muy perdido con esto... yo no soy programador y tampoco muy experto. cuando he tenido que hacer algo he buscado en google y más o menos he tirado palante... pero con esto ya no sé que hacer...

El robocopy no hace lo que quiero que exactamente es:

A es la carpeta raíz y dentro de A están: 1, 2, 3, 4,......... y 16. Y dentro de cada una de estas carpetas numeradas del 1 al 16 hay unos 1000 archivos en cada una. Eso se almacena durante 24 horas 7 días a la semana en el disco local del equipo donde está el software de las cámaras. Obviamente eso peta el disco en poco tiempo por lo que las saco a una NAS de 2TB que está en la red y de la que mantengo los últimos 31 días. Ahora como lo hago es con esto:


TIME /T > "%TEMP%\Hora.txt"
SET /P Hora=<"%TEMP%\Hora.txt"
SET Fecha=%date:~6,4%-%date:~3,2%-%date:~0,2%---%Hora:~0,2%-%Hora:~3,2%
DEL "%TEMP%\Hora.txt"


ROBOCOPY /MIR /COPY:DT /NFL /NDL /R:1 /W:1 /Eta /MOVE /LOG:"C:\Program Files\LOGS\%Fecha%.txt" "C:\TMP_dia_actual" "\\192.168.10.119\vigilancia\TODAS\%Fecha%

ping -n 15 127.0.0.1


mkdir "C:\TMP_dia_actual"

ping -n 15 127.0.0.1


cd "C:\Program Files\Release4.5"
start compruebalog.exe

ping -n 15 127.0.0.1


El start compruebalog.exe lee el log y si encuentra la palabra "error" seguida de un número, me manda un correo diciéndome que ha habido errores en la copia. Esto se ejecuta por tarea programada cada dia a las 00:00h y obvimannte cuando se ejecuta, las camaras siguen grabando (porque si las paro es mucho tiempo lo que tarda en copiar y sería mucho tiempo sin camaras) y pisa archivos que se entan grabando. Todos los dias recibo correo de error y muchos dias se cuega el programa....

Lo que quisiera es darle una vuelta de tuerca y que me grabara en la nas la misma estructura de carpetas que en el origen con todos sus archivos y que estuvieran grabados en su respectivo día... osea, yo lo ejecuto el 09-12-2022 a las 00:01h y copie todo a la nas a una carpeta que se llame 08-12-2022 y que contenga del 1 al 16, cada una con sus respectivos archivos que se llaman como los llama el software de grabación....

Perdón por la chapa, pero no sé cómo explicarlo más reducidamente.... ¿puedes ayudarme?

Gracias de nuevo...
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

Ayuda con bat

Publicado por Antoni Masana (811 intervenciones) el 08/12/2022 18:04:09
Para obtener la fecha y hora es mas simple asi:

1
SET Fecha=%date:~6,4%-%date:~3,2%-%date:~0,2%---%Time:~0,2%-%Time:~3,2%

Si lo entiendo tienes una estructura de directorios algo asi:

1
2
3
4
5
6
7
8
9
10
Listado de rutas de carpetas
El número de serie del volumen es
C:.
+---A
¦   +---1
¦   ¦   +---1
¦   ¦   +---2
¦   +---2
¦   ¦   +---1
¦   ¦   +---2

Yo he puesto 2 directorios en cada nivel pero según entiendo hay 16 y en cada directorio 1000 archivos.
Y hay un montón de procesos escribiendo.

¿Puedes parar los procesos de 1 a 5 segundo?

Lo justo para ejecutar esto:

1
2
3
4
5
6
7
@echo off
MOVE C:\A C:\A_Old
MKDIR C:\A
for %%a in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16) do (
    MKDIR C:\A\%%a
    for %%b in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16) do MKDIR C:\A\%%a\%%b
    )

Renombra la estructura vieja y creas una nueva.
Para renombrar nadie tiene que estar en el directorio y todos los ficheros tienen que estar cerrados.

Y ya puedes hacer la copia sin problemas y borrar al finalizar C:\A_Old

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

Ayuda con bat

Publicado por Santiago (5 intervenciones) el 08/12/2022 21:17:19
Mae mia Antoni... ennla simpleza está la grandeza... con las tres primeras lineas me lonhas solucionado... la estructura luego la crea el programa de las camaras si no existe...

Un taskkill para cerrarlo (para que nonhaya archivos en uso) y tus tres primeras lineas... vuelvo a abrir el software de grabacion que crea sibestructirabybsigue a lo suyony mientras muevo arcivos a la nas.... GRACIAS GRACIAS GRACIAS!!!!! OLE TU!!
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