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
| | |-+  [Ayuda]Programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda]Programa  (Leído 3,498 veces)
TMarmol

Desconectado Desconectado

Mensajes: 89


Just Learning


Ver Perfil WWW
[Ayuda]Programa
« en: 18 Abril 2012, 23:40 pm »

Lo siento si posteo demasiado.

Estoy creando un programa que copie archivos de la carpeta que elijas a la carpeta que elijas, y que copie solo los archivos con la extension que quieras, hasta ahora todo va bien pero quiero que aparezca cuantos archivos se han copiado de cada clase sin que salga la linea completa del comando Copy que solo salga por ejemplo:

15 archivos .jpg fuerom copaidos o algo incluso mas corto!

una linea del comando es esta
Código:
xcopy "%userprofile%\downloads\*.jpg" "%userprofile%\Pictures"
xcopy "%userprofile%\downloads\*.png" "%userprofile%\Pictures"
xcopy "%userprofile%\downloads\*.gif" "%userprofile%\Pictures"
como podria hacer que cuando termine diga:

3.jpg, 15.png y 1.gif fueron copiados con exito

No tengo ni idea de como hacerlo.


« Última modificación: 18 Abril 2012, 23:44 pm por TMarmol » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.870



Ver Perfil
Re: [Ayuda]Programa
« Respuesta #1 en: 19 Abril 2012, 00:19 am »

Aqui tienes una mini mini funcion:

Código
  1. @Echo OFF
  2.  
  3. :: By Elektro H@cker
  4.  
  5. REM Modo de empleo:
  6. REM
  7. REM Call :XCOPY "[RUTA DE ORIGEN]" "[EXTENSION]" "[RUTA DE DESTINO] [OPCIONES de XCOPY]"
  8. REM
  9. REM Ejemplo:
  10. REM
  11. REM Call :XCOPY "C:\Windows\System32" "dll" "C:\"
  12. REM Echo %Copied%
  13.  
  14. :XCOPY
  15. IF NOT Exist "%~1" (Exit /B 1) ELSE (IF NOT Exist "%~3" (Exit /B 1))
  16. For /F "tokens=*" %%#  in ('XCopy %4 "%~1\*.%~2" "%~3" ^| FIND /V "" ^| Find /V /C "copiado(s)"') Do (Set "Copied=%Copied%, %%#.%~2")
  17. Goto :EOF

Un bat de ejemplo para resolverte las dudas:

Código
  1. @Echo OFF
  2.  
  3. MKDIR C:\Test >NUL
  4. Call :XCOPY "C:\Windows" "exe" "C:\test" /Y
  5. Call :XCOPY "C:\Windows" "ini" "C:\test" /-Y
  6. Call :XCOPY "C:\Windows" "dll" "C:\test"
  7. Goto :FIN
  8.  
  9. :XCOPY
  10. IF NOT Exist "%~1" (Exit /B 1) ELSE (IF NOT Exist "%~3" (Exit /B 1))
  11. For /F "tokens=*" %%#  in ('XCopy %4 "%~1\*.%~2" "%~3" ^| FIND /V "" ^| Find /V /C "copiado(s)"') Do (Set "Copied=%Copied%, %%#.%~2")
  12. Goto :EOF
  13.  
  14. :FIN
  15. Echo %copied:~2% Fueron copiados.

output:
Citar
8.exe, 5.ini, 2.dll Fueron copiados.



Si prefieres algo más sencillo, menos elaborado:

Código
  1. @Echo OFF
  2.  
  3. Set EXT=ini
  4. For /F "tokens=1,* Delims= " %%# in ('XCopy /Y "C:\Windows\*.%EXT%" "C:\Test" ^| Find "copiado(s)"') Do (Set "Copied=%COPIED%, %%# archivos .%ext%")
  5.  
  6. Set EXT=exe
  7. For /F "tokens=1,* Delims= " %%# in ('XCopy /Y "C:\Windows\*.%EXT%" "C:\Test" ^| Find "copiado(s)"') Do (Set "Copied=%COPIED%, %%# archivos .%ext%")
  8.  
  9. :FIN
  10. Echo %copied:~2% Fueron copiados.

output:
Citar
5 archivos .ini, 8 archivos .exe Fueron copiados.


Salu2


« Última modificación: 19 Abril 2012, 00:29 am por EleKtro H@cker » En línea



TMarmol

Desconectado Desconectado

Mensajes: 89


Just Learning


Ver Perfil WWW
Re: [Ayuda]Programa
« Respuesta #2 en: 19 Abril 2012, 00:35 am »

Aqui tienes una mini mini funcion:

Código
  1. @Echo OFF
  2.  
  3. :: By Elektro H@cker
  4.  
  5. REM Modo de empleo:
  6. REM
  7. REM Call :XCOPY "[RUTA DE ORIGEN]" "[EXTENSION]" "[RUTA DE DESTINO] [OPCIONES de XCOPY]"
  8. REM
  9. REM Ejemplo:
  10. REM
  11. REM Call :XCOPY "C:\Windows\System32" "dll" "C:\"
  12. REM Echo %Copied%
  13.  
  14. :XCOPY
  15. IF NOT Exist "%~1" (Exit /B 1) ELSE (IF NOT Exist "%~3" (Exit /B 1))
  16. For /F "tokens=*" %%#  in ('XCopy %4 "%~1\*.%~2" "%~3" ^| FIND /V "" ^| Find /V /C "copiado(s)"') Do (Set "Copied=%Copied%, %%#.%~2")
  17. Goto :EOF

Un bat de ejemplo para resolverte las dudas:

Código
  1. @Echo OFF
  2.  
  3. MKDIR C:\Test >NUL
  4. Call :XCOPY "C:\Windows" "exe" "C:\test" /Y
  5. Call :XCOPY "C:\Windows" "ini" "C:\test" /-Y
  6. Call :XCOPY "C:\Windows" "dll" "C:\test"
  7. Goto :FIN
  8.  
  9. :XCOPY
  10. IF NOT Exist "%~1" (Exit /B 1) ELSE (IF NOT Exist "%~3" (Exit /B 1))
  11. For /F "tokens=*" %%#  in ('XCopy %4 "%~1\*.%~2" "%~3" ^| FIND /V "" ^| Find /V /C "copiado(s)"') Do (Set "Copied=%Copied%, %%#.%~2")
  12. Goto :EOF
  13.  
  14. :FIN
  15. Echo %copied:~2% Fueron copiados.

output:


Si prefieres algo más sencillo, menos elaborado:

Código
  1. @Echo OFF
  2.  
  3. Set EXT=ini
  4. For /F "tokens=1,* Delims= " %%# in ('XCopy /Y "C:\Windows\*.%EXT%" "C:\Test" ^| Find "copiado(s)"') Do (Set "Copied=%COPIED%, %%# archivos .%ext%")
  5.  
  6. Set EXT=exe
  7. For /F "tokens=1,* Delims= " %%# in ('XCopy /Y "C:\Windows\*.%EXT%" "C:\Test" ^| Find "copiado(s)"') Do (Set "Copied=%COPIED%, %%# archivos .%ext%")
  8.  
  9. :FIN
  10. Echo %copied:~2% Fueron copiados.

output:

Salu2

Gracias! Lo probare mañana, para que sirve esta linea?
Código:
mkdir C:\Test >nul[/
Concretamente lo de nul
En línea

$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: [Ayuda]Programa
« Respuesta #3 en: 19 Abril 2012, 00:44 am »

>nul  --> sirve para que no devuelva nada el comando, imaginate que te diga "Directorio creado", no te gustaria. Aunque en este caso no devuelve nada, lo habra puesto por costumbre, pero el >nul se usa por ejemplo con "pause>nul" , fijate que si lo pones asi no te aparece el clasico mensaje de "Presione una tecla para continuar.."
En línea

TMarmol

Desconectado Desconectado

Mensajes: 89


Just Learning


Ver Perfil WWW
Re: [Ayuda]Programa
« Respuesta #4 en: 19 Abril 2012, 16:48 pm »

>nul  --> sirve para que no devuelva nada el comando, imaginate que te diga "Directorio creado", no te gustaria. Aunque en este caso no devuelve nada, lo habra puesto por costumbre, pero el >nul se usa por ejemplo con "pause>nul" , fijate que si lo pones asi no te aparece el clasico mensaje de "Presione una tecla para continuar.."
Y para que sirve llamar al comando en vez de ejecutarlo directamente?
Código:
call xcopy
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.870



Ver Perfil
Re: [Ayuda]Programa
« Respuesta #5 en: 19 Abril 2012, 17:41 pm »

Y para que sirve llamar al comando en vez de ejecutarlo directamente?
Código:
call xcopy

No estás llamando a un comando, Estás llamando a una subrutina que su etiqueta se llama XCOPY.

Entre otras cosas, En ese código sirve para pasarle parámetros, y no tener que repetir (escribir lineas) el comando muchas veces.
En un tutorial básico explican esas cosas a la perfección.

salu2


PD: En el code de antes quise poner mkdir 2>NUL XD
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA CON PROGRAMA
Diseño Gráfico
Luisango 1 2,658 Último mensaje 17 Abril 2005, 13:25 pm
por Sub_Cero
ayuda con mi programa
Programación Visual Basic
nitrox 2 2,517 Último mensaje 31 Julio 2005, 00:48 am
por Slasher-K
Ayuda con programa en vb
Programación Visual Basic
BriaNUR 1 1,480 Último mensaje 12 Febrero 2006, 16:55 pm
por Kizar
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines