Copiar archivos en CMD usando xcopy.
Necesitamos:
El programa, carpetas acopiar y los
parametros para el archivo bat.
xcopy "carpeta de origen" "carpeta de destino" /e /i /h /y
Bien ahora quiero que muestre el progreso de copiado en CMD.
Agreguen lo siguiente al archivo bat.
- @echo off
- REM tamaño de ventana
- mode 100,38
- setlocal EnableDelayedExpansion
- setlocal enableextensions
- REM GOZARCK SALUTE YOU Por favor sientase libre de modificar estos archivos batch.
- title CMD File copier -- BY GOZARCK (C) 2017
- REM configura la carpeta de origen(cdo)
- set cdo=J:\games\GOG Games\Enter the Gungeon
- REM configura la carpeta de destino(cdd)
- set cdd=Z:\games\GOG Games\Enter the Gungeon
- REM xcopy "carpeta de origen" "carpeta destino" parametros.
- call !mbt! | start /b xcopy "%cdo%\*.*" "%cdd%" /e /i /h /y
- REM :mbt es donde se encuentra los procesos de sumar, multiplicar y dividir para crear el progreso
- :mbt
- REM obtener el tamaño de carpeta de origen (cdo)
- REM sizeo es el tamaño inicial se encuentra en bytes
- set sizeo=0
- for /r "%cdo%" %%k in (*) do set /a sizeo+=%%~zk
- REM sizeo al estar en bytes lo que hacemos es convertirlo en a kb
- set /a KBo=%sizeo%/1024
- REM obtener el tamaño de carpeta de destino (cdd)
- REM size es el tamaño inicial se encuentra en bytes
- set size=0
- for /r "%cdd%" %%x in (*) do set /a size+=%%~zx
- REM al estar en bytes lo que hacemos es convertirlo en a kb
- set /a KB=(%size%/1024)
- REM o tambien a MB
- set /a MB=(%size%/1024)/1024
- REM tomamos el tamaño de la carpeta de origen en KB y lo convertimos en una variable dinamica(simbolizada con "!") la cual cambia constantemente.
- set /a v=!KBo!
- REM MBd mostrar en progreso
- set /a MBd=(%v%/1024)
- REM KBd mostrar en progreso
- set /a KBd=%v%
- REM esta es la variable de progreso en porcentaje. el simbolo de porcentaje se coloca escribiendo el mismo 3 veces(ejemplo 100%%%).
- set /a prog=( 100 * %KB% ) / %v%
- REM Mostrar progreso en la barra de titulo.
- title Copiando Archivos -- %KB% / %Kbd% KB -- -- %MB% / %MBd% MB
- Progreso %prog%%%%
- REM si el progreso llega a 100% ir hacia pausa.
- if %prog%==100 goto:pause
- REM sino volver a mbt
- goto:mbt
- endlocal
- :pause
- REM pausa
- pause
- REM fin del archivo
- goto:eof
- )
Error de división por cero.
ResponderEliminar"Progreso" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
No se esperaba goto:pause en este momento.
Un error comun puede ser el xcopy.
Eliminarprueba reemplazando la linea 13 con:
call !mbt! | start /b copy "%cdo%\*.*" "%cdd%"