Por que este bat no me funciona?

Iniciado por NekoOs, 16 Febrero 2012, 06:13 AM

0 Miembros y 2 Visitantes están viendo este tema.

NekoOs

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

Eleкtro

#1
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.








NekoOs

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:

  • El uso de # como variable en el for es solo un hecho caprichoso o debo evitar usar letras?
  • Anteriormente "claro esta no en FOR" contador=contador+1 me ha funcionado porque aqui no  :huh:
  • Quiero hacer una modificacion mas el caso es que deseo el nombre de cada unidad extraible "me refiero a la etiqueta"  :P
  • Aun no comprendo bien el uso de estos caracteres |, &


Gracias por todo enserio me has sido de gran ayuda  ;-)  ;-)

Eleкtro

#3
    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.








    NekoOs

    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
    notaras que en la linea 7 hablo de unas Acciones, pues aqui las posteo
    Codigo fuente objetivo
    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  ;-)  ;-)

    Eleкtro

    #5
    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