Necesito un bat para copiar un archivo de la usb al pc, la usb esta conectada al mismo pc.

Un bat que detecte la letra de la usb o un archivo que este dentro de esta y me copie toda la carpeta donde esta este archivo, tengo un código pero es poniendo la letra de la usb pero necesito es que la detecte. El código me copia la carpeta completa y esta bien pero necesito ahora es desde usb y que detecte la letra.

@echo off
Echo Hola, Copiaremos un archivo
Pause
xcopy "C:\Users\Santiago\Desktop\carpeta prueba" "C:\Program Files\carpeta prueba" /E /I

Pause

Respuesta
2

En un caso algo parecido (ver Bat que ejecute archivo en usb ) había sugerido explorar todas las unidades. Algo así:

@echo off
for /d %%i in (e,f,g,h,i,j,k,l,m,n,o,p,que,r,es,t,u,v,w,por,y,z) do (if exist %%i:*.* call :copiar %%i)
goto :eof
:Copiar
Xcopy "C:\Users\Santiago\Desktop\carpeta prueba" "%1:\carpeta prueba" /E /I

prevengo que el editor de la página puede cambiar la "k" de la lista por "que" (en el pasado lo hacía y, aunque creo que han arreglado algunas cosas para evitarlo, todavía hace cambios). La lista habría que editarla si el ordenador en el que se ejecuta tiene más o menos unidades de disco duro (por ejemplo si solo tiene disco duro "C:" la lista debería empezar en "d", pero si tiene discos duros C:, D:, E: y F: debería empezar en "g". Este código copiaría la carpeta "C:\Users\Santiago\Desktop\carpeta prueba" en "carpeta prueba" de las unidades USB que estuvieran conectadas en ese momento. Si se quiere otra cosa, por ejemplo que solo se haga esa copia en las unidades USB en las que exista un archivo de nombre fijo (por ejemplo ID.TXT) habría que retocar la condición del IF. Si no lo tienes claro o necesitas más "ajustes" cuéntamelo y lo vemos.

He visto que no es la "k" por "que" lo que ha cambiado sino la "q". Y también la "s" por "es" y la "x" por "por". La lista que yo escribí en el "snippet" era:

e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z

Perdón. Acabo de darme cuenta de que he invertido el origen y destino de la copia, seguramente influido por el otro caso parcialmente similar comentado. Habría que invertir los papeles en el xcopy. Pero, insisto, si no se ajusta exactamente a tus necesidades me lo dices y lo miramos.

El código lo intercambie de intentar y copia excelente desde la usb pero salen una serie de errores, como si al buscar la usb marcara no encontrado en las otras letras hasta llegar a la de usb. Y el código que me envías para pasar de pc a usb debe estar la carpeta con el nombre crea no hay manera de que si no esta la cree. Hasta el momento me ha servido pero tengo estos inconvenientes gracias.

Gracias lo solucione con este código.

REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows /v ErrorMode /t REG_DWORD /d "2" /f

Y con un programa que convierte el archivo bat a exe.

Me alegro mucho de que hayas resuelto tu problema. Ayer no pude ocuparme de él porque tuve un día un poco liado.

No obstante no entiendo muy bien los problemas que te planteaba el bat que te pasé. ¿Con qué sistema operativo trabajas? He probado el bat en Windows XP y en Windows 10 y solo me salen mensajes del tipo "No se encuentra el archivo: Carpeta prueba" para las unidades presentes (usb o no) que no tengan esa carpeta. Se podría evitar incluyendo la carpeta en el EXIST. Es decir haciendo que la instrucción del DO fuera:

if exist ""%%i:\carpeta prueba\*.*" call :copiar %%i

En cuanto a la creación de la carpeta en el destino si no existe, en mis pruebas se crea sin problemas. Si existe pide permiso para sobreescribirla (se podría evitar añadiendo el control "/Y")

Y tampoco tengo claro de que manera pudo resolverlos el comando REG ADD. En mis máquinas el registro que se añade ya existe con valor cero pero si lo borro tampoco pasa nada.

En todo caso lo más importante es que hayas podido resolver tu problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas