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
1 Respuesta
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"
@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
¡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
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
Así no se puede trabajar con la página. Voy a intentar pasártelo con mega:
https://mega.nz/file/E552HRqJ#WJdrX3_DAztswoIYhRKTGXCX51FNmWJexroXY8oSILg
- Compartir respuesta