Como abreviar código o letras de las unidades usb

Puedes ayudarme a simplificar este código

(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "E:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "F:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "G:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "H:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "I:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "J:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "K:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "L:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "M:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "O:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "P:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "Q:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "R:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "S:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "T:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "U:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "V:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "W:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "P:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "Y:\biblioteca\historia\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf) DO (copy /y "%%a" "Z:\biblioteca\historia\"))

el problema es cuando va a copiar los archivo a la usb confirma por cada archivo que la ruta no existe hasta que llega a la que exite lo cual es una perdida de tiempo

C:\Nueva carpeta\Nueva carpeta\d tem>(cop
y /y "C:\$Recycle.Bin\S-1-5-21-3636321591\$1NPWAY.doc" "E:\biblioteca\historia\" )
El sistema no puede encontrar la ruta especificada.

Hace eso para cada archivo y luego pasa a la siguiente letra de unidad entonces lo que quiero es que localice la usb que tiene la ruta y luego comience el proceso de copiado

1 respuesta

Respuesta
1

Prueba con esto:

@echo off
for /d %%i in (c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do (if exist %%i:\biblioteca\historia\ call :copiar %%i)
goto :fin
:copiar
for /r "c:\" %%a in (*.doc,*.docx,*.rtf) do (copy /y "%%a" "%1:\biblioteca\historia\%%~nxa")
goto :eof
:Fin

Si te he entendido bien creo que te funcionará. Si no, ya me dirás.

Como ves primero se localiza el disco que tiene esa carpeta y luego ya se copian en él los archivos. Los modificadores "nx" que siguen al carácter especial "~" se usan para decirle al comando que solo tiene que tomar de la variable %%a el nombre (la "n") y la extensión (la "x"). Te lo digo por si no conocías estas peculiaridades. Si no se hiciera así metería el nombre completo, incluyendo la unidad y el "path" de cada archivo y daría error.

Y esta vez me he acordado de desactivar a tiempo el corrector ortográfico.

Una versión más compacta:

@echo off
for /d %%i in (c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do (
if exist %%i:\biblioteca\historia\ for /r "c:\" %%a in (*.doc,*.docx,*.rtf) do (copy /y "%%a" "%%i:\biblioteca\historia\%%~nxa")
)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas