Bat para copiar contenido de una unidad (x) hacia otra unidad (x) seleccionándola desde la consola

Creo esta estructura de comandos es de auditoria de gggirald buenas noches estimado lo que deseaba con esta secuencia de comandos es que la orden de copia no inicie desde la unidad C si no desde una unidad X cualquiera que yo seleccione en la consola hacia otra unidad, por ejemplo tengos dos usb en el equipo y deseo que el contenido de la unidad origen sea copiado hacia la otra unidad destino seleccionando la letra desde la consola. El problema que veo es que al tratar de poner la variable %unidad% en origen y destino me genera error de copia ciclica le agradezco si me pudieras despejar un poco las dudas, muchas gracias estimado.

BAT EJEMPLO

https://postimg.cc/ZBDHhRhD

1 respuesta

Respuesta
2

He "reproducido" tu bat de Backup. El enlace proporciona una "foto" no el código en sí, por ello he tenido que "reproducirlo". Te iba a sugerir que lo hiciera con la herramienta snippet de la página, pero me da la impresión de que no funciona.

He probado en mi entorno y no me da ningún problema, pero no puedo copiar por aquí el pantallazo que lo demuestra porque parece que tampoco va bien la herramienta "Añadir Imagen". Así que te sugiero que saques otra foto de la pantalla de ejecución con un TYPE previo del BAT y luego el error de copia cíclica que comentas

Buenos días estimado no sé si con esta secuencia me haga entender a lo que deseo llegar, sé que está mal estructurada el problema que veo es que al reproducirla me arroja esto

Unidad Origen sobre la que se quiere hacer el backup:k
Unidad Destino donde quedara la copia :m
No se puede realizar una copia cíclica
0 archivo(s) copiado(s)
Presione una tecla para continuar . . .
Cabe recalcar que las letras no son fijas en el bat se dejan a petición de la que salgan en cada unidad, muchas gracias estimado, lo coloco en un txt online  ya que  la pagina no me permite  exponer la secuencia en el campo de respuesta  

https://www.protectedtext.com/ejemplo-copia-unidad            contraseña:123

Ahora me ha quedado claro que el "BAT EJEMPLO" no era muy buen ejemplo porque en realidad era un ejemplo de obtener el Backup de la carpeta Documents de un usuario. Con ese bat recreado por mí hice las pruebas y no obtuve ningún error.

En este otro BAT parece bastante claro que no puedes usar la misma variable, UNIDAD, para las unidades de origen y destino. Prueba con UDORIG y UDDEST por poner un ejemplo.

He informado a los responsables de la página del mal funcionamiento de las opciones que comentaba, porque complica mucho el buen uso de esta web. A ver si hacen algo y mejora.

Voy a probar a ver si ya funciona "Añadir Imagen":

Sigue sin funcionar, se eterniza y no carga la imagen.

Ahora voy a probar el snippet:

Probando Snippet

No suele dar problemas para cargarlo pero al dar a "ENVIAR" se produce un error.

Pues no ha dado problemas. Voy a ver que pasa si es código real, sería el de mi primer intento, copia del "BAT EJEMPLO":

@echo off
set /p usu=Usuario del que se quiere hacer el backup:
set /p unidad=Unidad sobre la que se quiere hacer el backup:
echo Haciendo Backup de usuario %usu% sobre unidad %unidad%
if not exist "c:\users\%usu%\Documents" goto :nodatos

Dio error al poner todo el bat, pero admitió la parte incluida. Voy a seguir probando:

@echo off
set /p usu=Usuario del que se quiere hacer el backup:
set /p unidad=Unidad sobre la que se quiere hacer el backup:
echo Haciendo Backup de usuario %usu% sobre unidad %unidad%
if not exist "c:\users\%usu%\Documents" goto :nodatos
if not exist %unidad%:\%usu%\Documents md %unidad%:\%usu%\Documents
xcopy /D /S /Y /I /H "c:\users\%usu%\Documents\*.*" "%unidad%:\%usu%\Documents"
@echo off
set /p usu=Usuario del que se quiere hacer el backup:
set /p unidad=Unidad sobre la que se quiere hacer el backup:
echo Haciendo Backup de usuario %usu% sobre unidad %unidad%
if not exist "c:\users\%usu%\Documents" goto :nodatos
if not exist %unidad%:\%usu%\Documents md %unidad%:\%usu%\Documents
xcopy /D /S /Y /I /H "c:\users\%usu%\Documents\*.*" "%unidad%:\%usu%\Documents"

Parece que son las instrucciones tipo "if errorlevel"

@echo off
set /p usu=Usuario del que se quiere hacer el backup:
set /p unidad=Unidad sobre la que se quiere hacer el backup:
echo Haciendo Backup de usuario %usu% sobre unidad %unidad%
if not exist "c:\users\%usu%\Documents" goto :nodatos
if not exist %unidad%:\%usu%\Documents md %unidad%:\%usu%\Documents
xcopy /D /S /Y /I /H "c:\users\%usu%\Documents\*.*" "%unidad%:\%usu%\Documents"
echo Backup terminado correctamente
goto :fin
:nodatos
echo No hay documentos del usuario %usu% en la carpeta c:\users\%usu%\Documents. Revisar
:Fin
Pause

Última prueba:

@echo off
set /p usu=Usuario del que se quiere hacer el backup:
set /p unidad=Unidad sobre la que se quiere hacer el backup:
echo Haciendo Backup de usuario %usu% sobre unidad %unidad%
if not exist "c:\users\%usu%\Documents" goto :nodatos
if not exist %unidad%:\%usu%\Documents md %unidad%:\%usu%\Documents
xcopy /D /S /Y /I /H "c:\users\%usu%\Documents\*.*" "%unidad%:\%usu%\Documents"
if errorlevel 4 goto :fin
echo Backup terminado correctamente
goto :fin
:nodatos
echo No hay documentos del usuario %usu% en la carpeta c:\users\%usu%\Documents. Revisar
:Fin
Pause

Pues no tengo una conclusión válida, ahora si ha admitido un "if errorlevel"

¡Gracias!  estimado voy a poner dichas variables y ver si me da con  las 2  pero no sé si me pudieras ayudar con la estructura del ultimo bat  de unidad a unidad  se lo agradezco estimado.

@echo off
set /p udorig=Unidad Origen de la que se quiere hacer el backup:
set /p uddest=Unidad Destino  donde quedar  la copia :
echo Haciendo Backup de unidad %udorig%: sobre unidad %uddest%:
if not exist %udorig%:\*.*  goto :nodatos
if not exist %uddest%:\*.*  goto :nodest
xcopy /D /S /Y /I /H  %udorig%:\  %uddest%:\
if errorlevel 5 echo.&echo Error de disco en la grabaci¢n&goto :fin
if errorlevel 4 goto :fin
if errorlevel 2 echo.&echo No hay espacio suficiente en el disco&goto :fin
if errorlevel 1 echo.&echo No hay archivos a copiar&goto :fin
echo Backup terminado correctamente
goto :fin
:nodatos
echo No hay archivos en la unidad  %udorig%. Revisar porfavor&goto :fin
:Nodest
Echo La unidad de destino no existe o no est montada
:Fin
Pause

¡Qué curioso! Me ha admitido el bat propuesto tal cual. Antes intenté incluirlo con algo de texto y me dio error. Decía, entre otras cosas, que aunque parezca que falta la a acentuada en las líneas 3 y 17 en realidad no es así, el código que parece un espacio visto desde los caracteres Windows en realidad es la a acentuada para MSDOS. Prueba el bat y me dices

He visto que los controles con "IF NOT EXIST" no valen para esto. Prueba esta versión:


                    

Hola estimado si el if para unidades no me lo toma y el nuevo que me enviaste no  aparece nada   muchas gracias estimado  por colaborarme

Ahora no consigo enviar la nueva versión.

Así no se puede trabajar con la página. Voy a intentar pasártelo con mega:

https://mega.nz/file/E552HRqJ#WJdrX3_DAztswoIYhRKTGXCX51FNmWJexroXY8oSILg 

¡Gracias!  estimado  muy servicial  me ayudo bastante con este bat 

¿Y ya funciona como querías? Si es así cierra la consulta.

Perdón. Creo que ya está cerrada

He actualizado el archivo en MEGA porque con corta/pega dejé algunos errores

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas