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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Batch] Ayuda con código
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Batch] Ayuda con código  (Leído 3,090 veces)
shadowhunter

Desconectado Desconectado

Mensajes: 23


Ver Perfil
[Batch] Ayuda con código
« en: 11 Octubre 2013, 16:24 pm »

Hola, alguien podria decirme donde me estoy equivocando?

Tengo este code:

Código:
@Echo OFF & Color 70 & MODE con cols=75
Title Animefiles 1.3.2

CD Plugins
if not exist Activados.txt (
--------->Activados.txt
)

:ACTIVAR
cls
SETLOCAL EnableDelayedExpansion
Set "Directory=%CD%\plugins"

For %%# in (
"%Directory%\*.bat"
) Do (
Set /A "FileCount+=1"
Set "File!FileCount!=%%~nx#"
)
echo.
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ |MORE
For /L %%X in (1, 1, !FileCount!) Do (
Type "%Directory%\activados.txt" | Findstr /V /I "!File%%X!" do (set info=Activado)
if not defined info (set info=Desactivado)
Echo %%X. !File%%X! %info% | MORE
)
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ|MORE
echo Seleccione el plugin que desea activar:
echo.
Set /P "SelectFiles=
Set "SelectFiles=%SelectFiles: =%"
For %%# in (%SelectFiles%) Do (
Echo "!File%%#!" >> Activados.txt
)
pause
exit

El programa se encuentra en la ruta .\Programfiles\Animefiles y tanto los bat como el archivo Activados.txt en el subdirectorio Plugins. Lo que intento es que el for a la vez que imprime en pantalla los bat disponibles en la carpeta plugins, compare sus nombres con los almacenados en el archivo Activados y segun eso, la variable info imprima desactivado si no estan o activado si estan en la lista.



« Última modificación: 11 Octubre 2013, 16:28 pm por shadowhunter » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: [Batch] Ayuda con código
« Respuesta #1 en: 11 Octubre 2013, 17:28 pm »

Hola

Aquí se ve un fallo a simple vista, te comiste una comilla doble:
Citar
Código:
Set /P "SelectFiles=

Luego aquí no estás redireccionando absolútamente nada:
Citar
Código:
	--------->Activados.txt

No ibas mal encaminado en esta parte, pero esto no es un For, el keyword "Do" solo pertenece a un For, en su lugar usa los operadores lógicos y de comparación "&" "|" "&&"  "||".
Citar
Código:
Type "%Directory%\activados.txt" | Findstr /V /I "!File%%X!" do (set info=Activado)

Aquí no estás expandiendo la variable info, por lo tanto tus checkeos no iban a funcionar corréctamente.
Citar
Código:
Echo %%X. !File%%X! %info% | MORE

Prueba así:
Código:
@Echo OFF & Color 70 & MODE con cols=75
Title Animefiles 1.3.2

REM CD Plugins
if not exist ".\Plugins\Activados.txt" (
REM --------->Activados.txt
Echo. --------->".\Plugins\Activados.txt"
)

:ACTIVAR
cls
SETLOCAL EnableDelayedExpansion
Set "Directory=%CD%\plugins"

For %%# in (
"%Directory%\*.bat"
) Do (
Set /A "FileCount+=1"
Set "File!FileCount!=%%~nx#"
)
echo.
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ |MORE
For /L %%X in (1, 1, !FileCount!) Do (
REM Type "%Directory%\activados.txt" | Findstr /V /I "!File%%X!" do (set info=Activado)
Type "%Directory%\activados.txt" | Findstr /I "!File%%X!" 1>NUL 2>&1 && (
set "info=Activado"
) || (
set "info=Desactivado"
)
REM if not defined info (set info=Desactivado)
REM Echo %%X. !File%%X! %info% | MORE
Echo %%X. !File%%X! !info! | MORE
)
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ|MORE
echo Seleccione el plugin que desea activar:
echo.
Set /P "SelectFiles="
Set "SelectFiles=%SelectFiles: =%"
REM For %%# in (%SelectFiles%) Do (
REM Echo "!File%%#!" >> Activados.txt
REM )
(For %%# in (%SelectFiles%) Do (Echo "!File%%#!"))>> ".\Plugins\Activados.txt"
pause
exit


En línea



shadowhunter

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: [Batch] Ayuda con código
« Respuesta #2 en: 12 Octubre 2013, 13:42 pm »

gracias por la ayuda, ya consegui que funcione   ;-), dejo el codigo por si alguien le sirve de ayuda para otra cosa:

Código:
@Echo OFF & Color 70 & MODE con cols=75
Title Animefiles 1.3.2

REM CD Plugins
if not exist ".\Plugins\Activados.txt" (
--------->".\Plugins\Activados.txt"
)

:MAIN
cls
SETLOCAL EnableDelayedExpansion
Set "Directory=%CD%\plugins"

For %%# in (
"%Directory%\*.bat"
) Do (
Set /A "FileCount+=1"
Set "File!FileCount!=%%~nx#"
)
echo.
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ |MORE
For /L %%X in (1, 1, !FileCount!) Do (
REM Type "%Directory%\activados.txt" | Findstr /V /I "!File%%X!" do (set info=Activado)
Type "%Directory%\activados.txt" | Findstr /I "!File%%X!" 1>NUL 2>&1 && (
set "info=Activado"
) || (
set "info=Desactivado"
)
REM if not defined info (set info=Desactivado)
REM Echo %%X. !File%%X! %info% | MORE
Echo %%X. !File%%X! !info! | MORE
)
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ|MORE
echo que quiere hacer? (Activar/desactivar)
echo.
set/p "menu=>"
if not defined menu (
ENDLOCAL
goto :MAIN
)
if %menu%==Activar goto ACTIVAR
if %menu%==ACTIVAR goto ACTIVAR
if %menu%==activar goto ACTIVAR
if %menu%==Desactivar goto DESACTIVAR
if %menu%==DESACTIVAR goto DESACTIVAR
if %menu%==desactivar goto DESACTIVAR
cls
echo.
echo Opcion no valida. |MORE
pause
ENDLOCAL
goto MAIN

:DESACTIVAR
echo.
echo Elija el plugin que quiere desactivar:
echo.
Set /P "SelectFiles=>"
Set SelectFiles2=%SelectFileS%.bat
Type "%Directory%\activados.txt" | Findstr /V /I "%SelectFiles2%">"%Directory%\activados.tmp"
Del /Q "%Directory%\activados.txt"
Rename "%Directory%\activados.tmp" "activados.txt"
cls
echo.
echo Plugin desactivado. |MORE
pause
goto END

:ACTIVAR
echo.
echo Elija el plugin que quiere activar:
echo.
Set /P "SelectFiles=>"
Set SelectFiles2=%SelectFileS%.bat
CD Plugins
if not exist %selectfiles2% (goto ERROR)
echo %selectfiles2%>>Activados.txt
cls
echo.
echo Plugin activado. |MORE
pause
goto END

:ERROR
cls
echo ÉÍÍÍÍÍÍÍÍÍÍÍ»
echo º   ERROR   º
echo ÈÍÍÍÍÍÍÍÍÍÍͼ |MORE
echo No existe un plugin con ese nombre. |MORE
Pause
goto END

:END
CD..
Start Animefiles
Exit


EleKtro H@cker la parte de:
Código:
--------->Activados.txt

es solo para que el bat cree un archivo vacio llamado activados.txt, de la forma que tu lo pusiste el archivo contiene -----------

EDITO:Tengo una duda, esto funcionaria? o en caso de que no cual seria la forma correcta de escribirlo?

Código:
FOR %%A IN ("activados.txt") DO (
               call %%A  & goto :AUTORUN
)
« Última modificación: 12 Octubre 2013, 14:01 pm por shadowhunter » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: [Batch] Ayuda con código
« Respuesta #3 en: 13 Octubre 2013, 00:57 am »

EleKtro H@cker la parte de:
Código:
--------->Activados.txt

es solo para que el bat cree un archivo vacio llamado activados.txt, de la forma que tu lo pusiste el archivo contiene -----------

Entonces haz esto:
Código
  1. Echo.>"Activados.txt"

Aunque es preferible que para crear un archivo vacio hagas esto otro:
Código
  1. fsutil file createnew "Activados.txt" 0

La cuestión es redireccionar/crear al archivo corréctamene, tal y como lo hacias daba error, aunque el archivo se crea, si, pero la orden que usas no tiene integridad, queda feo.

EDITO:Tengo una duda, esto funcionaria? o en caso de que no cual seria la forma correcta de escribirlo?

Código:
FOR %%A IN ("activados.txt") DO (
               call %%A  & goto :AUTORUN
)

No funcionaría porque al usar "GOTO" etás saliendo del bloque del FOR, solo se procesaría corréctamente el primer plugin encontrado.

No has mostrado el código de la etiqueta Autorun así que no se muy bien que pretendes hacer, pero en lugar de usar "GOTO" usa "CALL", así llamas a ese bloque de la etiqueta "AUTORUN" y retornas al "FOR" para seguir procesando el resto de plugins. recuerda especificar un "GOTO:EOF" al final del bloque para poder retornar, dentro del bloque de ":AUTORUN".

Saludos
En línea



shadowhunter

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: [Batch] Ayuda con código
« Respuesta #4 en: 13 Octubre 2013, 12:47 pm »

Cierto culpa mia por no explicarme bien  :xD

lo que pretendo es que el for carge el contenido del archivo activados.txt y use la funcion call para cada uno de esos archivos, pero que valla directamente a la etiqueta :AUTORUN que tendran los archivos.

ejemplo de los archivos a llamar:

Código:
@echo off
@Echo OFF & Color 70 & MODE con cols=75
title ejemplo

:MAIN
echo.
echo Hola |MORE
pause
exit

:AUTORUN
echo.
echo adios |MORE
pause
exit
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Codigo batch
Scripting
neox. 7 5,014 Último mensaje 28 Julio 2006, 08:04 am
por R2d2_
ayuda con codigo batch
Scripting
zerocoolcom 5 3,702 Último mensaje 4 Julio 2010, 00:17 am
por zerocoolcom
Ayuda: Código Batch para propagar por red
Scripting
Dr.HARK 3 5,200 Último mensaje 1 Septiembre 2010, 02:15 am
por Novlucker
[Batch] Volver al inicio del código Ayuda
Scripting
kaffa22 4 3,535 Último mensaje 3 Septiembre 2012, 19:26 pm
por chicocos
[batch] cifrar codigo batch
Scripting
imlikeabird34 5 7,288 Último mensaje 5 Enero 2013, 00:14 am
por Segadorfelix
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines