Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: NekoOs en 16 Febrero 2012, 06:13 AM

Título: Por que este bat no me funciona?
Publicado por: NekoOs en 16 Febrero 2012, 06:13 AM
hasta ahora estoy haciendo prueba con:
@echo off
set /a cont=0
:inicio
for /f "tokens=1" %%x in ('wmic logicaldisk get caption^, description ^| find /i "extra"') do (
set /a cont=cont+1
echo %cont%)
pause

pero ni asi,   :huh: el resultado es una cantidad de lineas con resultado 0 "la cantidad de lineas es proporcional a la cantidad de discos"

esta pequeña parte funciona de maravilla
for /f "tokens=1" %%x in ('wmic logicaldisk get caption^, description ^| find /i "extra"') do (echo %%x)

la idea es llegar aqui:

@echo off
set /a cont=0
:inicio
for /f "tokens=1" %%x in ('wmic logicaldisk get caption^, description ^| find /i "extra"') do (
set /a cont=cont+1
echo %cont%
set /a var[%cont%]=%%x
pause
Título: Re: Por que este bat no me funciona!!
Publicado por: Eleкtro en 16 Febrero 2012, 15:12 PM
Cita de: Nefkofan en 16 Febrero 2012, 06:13 AM
for...) do (
set /a cont=cont+1
echo %cont%)

el resultado es 0

Tienes que expandir la variable.

Setlocal enabledelayedexpansion
echo !cont!


Cita de: Nefkofan en 16 Febrero 2012, 06:13 AM
"la cantidad de lineas es proporcional a la cantidad de discos"

¿Esto es lo que quieres?:

Código (dos) [Seleccionar]
@echo off
wmic logicaldisk get caption, description /format:csv | Find /i "extra" | Find /V /C ""
pause



EDITO:

O esto?...


Código (bash) [Seleccionar]
@echo off
Setlocal enabledelayedexpansion

For /F "Tokens=2 delims=," %%# in ('wmic logicaldisk get caption^, description /format:csv ^| Find /i "extra"') do (Set /A cont+=1& Set Var!Cont!=%%#)

Echo %Var1%
Echo %Var2%

pause>NUL


Saludos.
Título: Re: Por que este bat no me funciona!!
Publicado por: NekoOs en 16 Febrero 2012, 16:29 PM
EDITO:

O esto?...


Código (bash) [Seleccionar]
@echo off
Setlocal enabledelayedexpansion

For /F "Tokens=2 delims=," %%# in ('wmic logicaldisk get caption^, description /format:csv ^| Find /i "extra"') do (Set /A cont+=1& Set Var!Cont!=%%#)

Echo %Var1%
Echo %Var2%

pause>NUL


Saludos.

Realmente era esto lo que queria  ;-) ahora se me hace raro ya que la expansion ya la habia usado sin exito claro esta, quisiera hacerte unas preguntas solo por curiosidad:

Gracias por todo enserio me has sido de gran ayuda  ;-)  ;-)
Título: Re: Por que este bat no me funciona!!
Publicado por: Eleкtro en 16 Febrero 2012, 17:23 PM
Cita de: Nefkofan en 16 Febrero 2012, 16:29 PMEl uso de # como variable en el for es solo un hecho caprichoso o debo evitar usar letras?[/li][/list]
Un capricho y una costumbre, Solo uso letras cuando el FOR tiene que trabajar con más de un token.         Ejemplo: "Echo %%a %%b %%c"
Uso un caracter especial en la variable cuando el FOR solo trabaja UN token, Así no hay despistes cuando se hace un script muy largo, etc...


Cita de: Nefkofan en 16 Febrero 2012, 16:29 PMAnteriormente "claro esta no en FOR" contador=contador+1 me ha funcionado porque aqui no  :huh:
Por lo que dije antes, Tienes que expandir la variable dentro del FOR


Cita de: Nefkofan en 16 Febrero 2012, 16:29 PMAun no comprendo bien el uso de estos caracteres |, &
Nada que no se solucione con la lectura de algún manual básico de esta misma sección    :)


Cita de: Nefkofan en 16 Febrero 2012, 16:29 PMQuiero hacer una modificacion mas el caso es que deseo el nombre de cada unidad extraible "me refiero a la etiqueta"  :P

EDITO: Código modificado (Simplificado xD)
Código (bash) [Seleccionar]
@Echo off
Setlocal enabledelayedexpansion

:Drives
For /F "Tokens=2,4* delims=," %%A in ('wmic logicaldisk get caption^, description^, volumename /format:csv ^| Find /i "extra"') do (
Set /A NUM+=1
Set Unidad!NUM!=%%A
Set Etiqueta!NUM!=%%B
)

Set Num=1

:Print
If Defined Unidad!NUM! (Echo: !Unidad%NUM%! !Etiqueta%NUM%! | MORE & Set /A Num+=1& Goto :Print)

Pause
Exit



Salu2.
Título: Re: Por que este bat no me funciona!!
Publicado por: NekoOs en 16 Febrero 2012, 19:07 PM
es agradable contar con personas tan atentas como tu EleKtro H@cker  ;D
sabes en realidad esto es solo una parte de mi proyecto soy muy novato [cuando digo novato hablo en serio] seguramente uso comandos inoficiosos pero entenderas que trato de llevar mi logica jejje mira si no te molesta publico un link que muestra el codigo que genere gracias a tu ayuda.
Merecera un comentario en tu nombre (http://ideone.com/UFAzC)
notaras que en la linea 7 hablo de unas Acciones, pues aqui las posteo
Codigo fuente objetivo (http://ideone.com/OfctP)
si no te molesta podrias ver un poco el code y darme tu opinion  :silbar:
en todo caso gracias ya por todo lo que has echo  ;-)  ;-)
Título: Re: Por que este bat no me funciona!!
Publicado por: Eleкtro en 16 Febrero 2012, 19:33 PM
Cita de: Nefkofan en 16 Febrero 2012, 19:07 PM
si no te molesta podrias ver un poco el code y darme tu opinion  :silbar:

Claro, te doy mi opinión...
Más que nada solo hace falta corregir algunas erratas y escribir bien la syntax

Ping ..... > Null
Ping ..... > NUL

IF %salvar=="s" falta un simbolo de porcentaje en la variabe (%salvar)
IF /i "%salvar%" EQU "s"   así además puedes teclear "s" y "S" y dar la tecla por válida.

*.* Eso no trabaja sobre todos los archivos, Solo lo hace sobre archivos que tengan extensión.    (caracter<punto>caracter)
*

msg Gracias Usuario
msg Gracias %Username%  Así queda más chulo xD, Si no te funcionase escribe: %%username%%


Por lo demás no he podido analizarlo a fondo.

Toma:

Código (dos) [Seleccionar]
@ECHO OFF

MODE CON LINES=25
MODE CON COLS=81

:Dispositivo
CLS
SET /P letra=Introduce la letra de tu pendrive {USB}:
If NOT defined letra (Goto :Dispositivo)


ECHO ********************************************************************************
ECHO **                                                                            **
ECHO           Las Siguientes Acciones se realizaran el la Unidad {(%letra%)}
ECHO **                                                                            **
ECHO ********************************************************************************
ECHO.
ECHO Des-Ocultar los Archivos y Carpetas Contenidos en %letra%:\
ECHO Eliminar Accesos Directos Contenidos en %letra%:\
ECHO Timar Programas Malicioso {Archivos.exe} Contenidos en %letra%:\RECYCLER
ECHO.
IF NOT EXIST "%letra%:\RECYCLER" (MKDIR "%letra%:\RECYCLER")
if exist "%letra%:\*.lnk" (del "%letra%:\*.lnk")
Attrib /d /s -r -h -s "%letra%:\*"
FOR %%x in (%letra%:\RECYCLER\*.exe) DO (echo %%x>>"%letra%:\RECYCLER\neklist.txt")


IF EXIST "%letra%:\RECYCLER\neklist.txt" (goto :existe) else (goto :noexiste)

:existe
ECHO ::::::::::::::::::::::: Escaniando Archivos Sospechosos ::::::::::::::::::::::::
ping -n 10 localhost > nul
CLS

ECHO ********************************************************************************
ECHO **                                                                            **
ECHO **          Los siguientes Archivos mencionados seran ELIMINADOS              **
ECHO **                                                                            **
ECHO ********************************************************************************
ECHO.
ECHO ********************************************************************************
ECHO.
FOR %%x in (%letra%:\RECYCLER\*.exe) DO (echo %%x)
ECHO.
ECHO ********************************************************************************
ECHO.    
ECHO          Si alguno no representa alguna amenza presiona la tecla [s]                      
SET /P salvar=                    De lo contrario pulsa cualquier tecla:
If not defined salvar (Goto :Existe)
IF /i "%salvar%" EQU "s" (goto :guarda) ELSE (goto :nguarda)

:guarda
CLS
start %letra%:\RECYCLER
ECHO ********************************************************************************
ECHO **                                                                            **
ECHO **          Presiona cualquier tecla para continuar con las Acciones          **
ECHO **     "Recuerda los archivos contenidos en %letra%:\RECYCLER seran eliminados"     **
ECHO **                                                                            **
ECHO ********************************************************************************
PAUSE>NUL
ECHO.
FOR /F %%1 IN (%letra%:\RECYCLER\neklist.txt) DO (DEL %%1)
FOR /F %%1 IN (%letra%:\RECYCLER\neklist.txt) DO (MKDIR %%1)
DEL "%letra%:\RECYCLER\neklist.txt"
CLS
ECHO ********************************************************************************
ECHO **                   AHORA PUEDES DISFRUTAR DE TU USB                         **
ECHO **  Podras Insertarla en el PC que te ha contaminado sin preocupacion de una  **
ECHO **                         reinfeccion del mismo virus                        **
ECHO ********************************************************************************
PAUSE>NUL

:nguarda
FOR /F %%1 IN (%letra%:\RECYCLER\neklist.txt) DO (DEL %%1)
FOR /F %%1 IN (%letra%:\RECYCLER\neklist.txt) DO (MKDIR %%1)
DEL "%letra%:\RECYCLER\neklist.txt"
CLS
ECHO ********************************************************************************
ECHO **                   AHORA PUEDES DISFRUTAR DE TU USB                         **
ECHO **  Podras Insertarla en el PC que te ha contaminado sin preocupacion de una  **
ECHO **                         reinfeccion del mismo virus                        **
ECHO ********************************************************************************
PAUSE>NUL

:noexiste
CLS
ECHO ********************************************************************************
ECHO **                                                                            **
ECHO **                  NO EXISTEN INCONVENIENTES EN TU PENDRIVE                  **
ECHO **                                                                            **
ECHO ********************************************************************************
PAUSE>NUL
msg /time 10 * Gracias %Username% , Cualquier inconveniente no dudes en pasar por NekoOs.es.tl