ARCHIVOS .BAT + BARRA DE PROGRESO

Iniciado por martinsan99, 19 Diciembre 2006, 20:55 PM

0 Miembros y 1 Visitante están viendo este tema.

martinsan99

Holaaa
ANte todo buenas tardes, es agradable encontrar gente que comparte mis mismos gustos, les comento que encontre la pagina de casualidad, ingresando en google.

la duda es la siguiente:
tengo que copiar algunos archivos de una unidad a determinada hora. esto lo solucione con un archivo .bat y el programador de tareas del XP, cosa que me ha funcionado, pero necesito hacer lo siguiente:
cuando copia los archivos, hace un registro de los mismos en un txt, el que solucione con la siguiente linea...

xcopy m:\prueba\*.* p:\prueba\ /s/e/c/d:12-13-06/r/y/f >c:\registro.txt

esto con el xp es bastante util ya que me permite actualizar los archivos que se modificaron desde el 13/12 hasta el dia de la fecha en un solo comando.
el tema es que al generar el registro.txt, no se cuanto va copiando. necesito saber si alguien sabe como hacer una barra de progreso junto al bat.

el codigo completo del bat es el siguiente, para que lo vean...

@echo ****************************************
@echo *****    proceso de copia de archivos     ******
@echo *****  copiando archivos de public cobol ******
@echo *****   consulte avance en c:\registro.txt******
@echo ****************************************
@echo off

date /t >c:\temp1.txt
@echo >>c:\temp1.txt fecha de iniciacion de copia
time /t >c:\temp2.txt
@echo >>c:\temp2.txt hora de inicio

del c:\registro.txt

m:
cd\
cd prueba

xcopy m:\prueba\*.* p:\prueba\ /s/e/c/d:12-13-06/r/y/f >c:\registro.txt

cd\

date /t >c:\temp3.txt
@echo >>c:\temp3.txt fecha de finalizacion de copia.
time /t >c:\temp4.txt
@echo >>C:\temp4.txt hora de finalizacion . -- . proceso terminado

copy c:\temp1.txt+c:\temp2.txt+c:\registro.txt+c:\temp3.txt+c:\temp4.txt c:\txts\final.txt /b

del c:\temp1.txt
del c:\temp2.txt
del c:\temp3.txt
del c:\temp4.txt

@echo

@echo *proceso terminado, vea el archivo c:\txts\final.txt*

REM by *****SAM*****

que opinan???

saludos y muchas gracias...

Azielito

no podre ayudarte con esto pero si en orientarte a un mejor lugar para tus dudas sobres esto
existe un foro llamado Scripting dentro de este mismo
puedes verlo aca
http://foro.elhacker.net/index.php/board,64.0.html

sirdarckcat

pues, como lo haces todo dentro del comando de XCOPY no creo que se pueda hacer.. :P

Saludos!!

Division-x

Cita de: Sirdarckcat en 20 Diciembre 2006, 01:08 AM
pues, como lo haces todo dentro del comando de XCOPY no creo que se pueda hacer.. :P

Saludos!!

y de que manera habria que hacerlo para que se pudiese mostrar la barra de progreso??? oh, amable Sdc, por favor, solventa mi duda, ;D (vale cualkier otro, pero Sdc controla mazo del tema)

sirdarckcat

Haciendolo manualmente con un FOR :D

Saludos!!

Division-x


sirdarckcat

con un FOR.. haces un for que obtenga todos los archivos, y despues haces el xcopy para cada archivo individualmente, la barra de progreso de.. 20 puntos por ejemplo, se haria con la cantidad de archivos que llevas entre el total de archivos por 20..

con \r se puede borrar una misma linea :P y volver a escribirla, o con CLS pero con cls se ve muy feo xD

Saludos!!

pantocrator

Bueno hay un truco para la barra de progreso. Os lo muestro con un ejemplo de un ping.

:: Creado por Pantocrator (fleky)
:: Para el foro
:: Descripción
:: Hace un ping a todas las direcciones ip en el fichero lista.txt y crea un log
:: con la fecha y hora en que se realizó el ping incluyendo unicamente si el
:: ping fue erroneo.


@echo off
color 17
mode con lines=10 cols=59

FOR /F "tokens=1 delims=/ " %%a IN ('DATE /T') DO set diasemana=%%a
FOR /F "tokens=2 delims=/ " %%b IN ('DATE /T') DO set dia=%%b
FOR /F "tokens=3 delims=/ " %%c IN ('DATE /T') DO set mes=%%c
FOR /F "tokens=4 delims=/ " %%d IN ('DATE /T') DO set any=%%d


set fichero=%dia%%mes%%any%

if exist %fichero% (
   goto pings
   ) else (
    echo --[Hora]--    [Direccion IP]    [Host]      --[Mensaje]-->> %fichero%
    echo ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ>> %fichero% )


:pings
cls
echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³        Procesando Pings de servidores      ³
echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo 1234567890123456789
echo ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ

for /f "tokens=1,2 delims=|" %%p in (lista.txt) do (echo/|set/p ^=^Û&@ping %%p -n 2 | find "TTL">nul || @echo %time%  -[ %%p ] - [ %%q ] -     [ no responde ] >> %fichero% )

:fin
exit

Os he puesto en negrita el kit de la cuestión. Este truco lo saque de las news de microsoft.

saludos y espero que os sirva.

A Por cierto os aconsejo que editéis el script con el edit del dos.