Título: [Batch] Ayuda con c๓digo
Publicado por: shadowhunter en 11 Octubre 2013, 16:24 pm
Hola, alguien podria decirme donde me estoy equivocando? Tengo este code: @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.
Título: Re: [Batch] Ayuda con c๓digo
Publicado por: Eleкtro en 11 Octubre 2013, 17:28 pm
Hola Aquํ se ve un fallo a simple vista, te comiste una comilla doble: Luego aquํ no estแs redireccionando absol๚tamente nada: 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 "&" "|" "&&" "||". 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. Echo %%X. !File%%X! %info% | MORE Prueba asํ: @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
Título: Re: [Batch] Ayuda con c๓digo
Publicado por: shadowhunter 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: @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: 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? FOR %%A IN ("activados.txt") DO ( call %%A & goto :AUTORUN )
Título: Re: [Batch] Ayuda con c๓digo
Publicado por: Eleкtro en 13 Octubre 2013, 00:57 am
EleKtro H@cker la parte de: 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:
Aunque es preferible que para crear un archivo vacio hagas esto otro: 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? 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
Título: Re: [Batch] Ayuda con c๓digo
Publicado por: shadowhunter 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: @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
|