Necesito ayuda a encontrar donde falla este codigo:
@echo off & COLOR 70 & mode con: cols=75 lines=30
title Animefiles 1.3.2
@set ruta1= %CD%
Set "Directory=%CD%\plugins"
set sep=ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
SETLOCAL
CD Plugins
if exist autorun.txt (
<"autorun.txt" set /p "run="
call %run%
)
ENDLOCAL
:MENU
CD %ruta1%
cls
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Animefiles º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo º Version 1.3.2 º By Shadowhunter º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
echo Elija una opcion: |MORE
echo %sep%
echo 1 .Crear una nueva lista.
echo 2 .Ver listas.
echo 3 .Eliminar una lista.
echo 4 .Incluir un anime a una lista.
echo 5 .Eliminar un anime de una lista.
echo 6 .Buscar un anime.
echo 7 .Activar Plugins.
echo 8 .Abrir carpeta contenedora.
echo 9 .Ayuda.
echo 10.Salir.
echo ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
setlocal
For %%# in (
"%Directory%\*.bat"
) Do (
Set /A "FileCount+=1"
Set "File!FileCount!=%%~nx#"
)
For /L %%X in (1, 1, !FileCount!) Do (
Type "%Directory%\activados.txt" | Findstr /I "!File%%X!" 1>NUL 2>&1
Echo %%X. !File%%X! | MORE
)
endlocal
echo %sep%
echo.
set menu=0
set/p "menu=>"
if %menu%==1 goto CREAR
if %menu%==2 goto LISTAS
if %menu%==3 goto DEL
if %menu%==4 goto INDAT
if %menu%==5 goto DELANIME
if %menu%==6 goto BUSCAR
if %menu%==7 goto ACTIVAR
if %menu%==8 goto OPENC
if %menu%==9 goto MENU2
if %menu%==10 goto exit
cls
echo.
echo Opcion no valida. |MORE
pause
goto MENU
:CREAR
:LISTAS
:DEL
:INDAT
:DELANIME
:BUSCAR
:ACTIVAR
:OPENC
:MENU2
exit
El programa deberia de cargar una serie de nombres de archivos que estarian almacenados en activados.txt de la forma:
prueba1.bat
prueba2.bat
prueba3.bat
....
y mostrarlos como un menu de la forma:
1. prueba1
2. prueba2
3. prueba3
....
Pero no consigo que se muestre en pantalla, al igual que tambien deberia de cargar el nombre de un unico archivo almacenado en autorun.txt si existe y ejecutar ese archivo, pero me lo carga y no lo ejecuta.
agradezco cualquier ayuda u opinion al respecto.
Te falta por una parte activar o permitir la extensión de variables para que se puedan definir las variables, que como bien has escrito, van entre "!".
setlocal enabledelayedexpansion
Aquí tienes la explicación
http://ss64.com/nt/delayedexpansion.html
Mira a ver si es eso.
Un saludo.
gracias pero sigo sin poder eliminarle la extension y tambien me gustaria que empezara a partir del 10, pero al ponerlo hace cosas extrañas.
Ahh perdón, me había dejado media respuesta XD
Cuando ejecutas la línea
Set "File!FileCount!=%%~nx#"
No puedes quitar la "x" del parámetro "~nx". Sabiendo que estás rastreando solo archivos .bat puedes guardar las variables sin la extensión y añadirle la extensión si es necesario a posteriori.
Otra solución, que supongo que te gustará más es evitar la extensión solo a la hora de mostrarlo modificando la línea del ECHO.
Echo %%X. !File%%X:.bat=! | MORE
De este modo sustituyes el ".bat" por nada.
Un saludo
Muchas gracias almapa XD
:D :D
pero el problema que tengo es que comienza a enumerar a partir de 1 yo quiero que empieze por el 11 y si modifico para que empiece desde 10 me da errores...
ayuda por favor!
Como??? A ver si quieres que lo que se muestre sea
11. prueba1
12. prueba2
13. prueba3
Puedes crear una variable dentro del bucle que sea:
set /a variable=%%X+10
y mostrarla donde quieras que aparezca, en el caso que te proponía yo sería:
Echo !num!. !File%%X:.bat=! | MORE
Si de verdad quieres aprender, este tipo de fallo lo deberías investigar e intentar solucionar tu solo, pero en cuestión de 10 minutos no creo que hayas investigado mucho ;)
Un saludo
Si ofender, pero si pido ayuda es por que no consigo que me funcione :xD
Precisamente habia intentado poniendo como tu me propones:
set /a variable=%%X+10
pero en ese caso, la variable no me imprime en pantalla nada, solo imprime !File%%X:.bat=!
A mi así:
For %%# in (
"%Directory%\*.bat"
) Do (
Set /A "FileCount+=1"
Set "File!FileCount!=%%~nx#"
)
For /L %%X in (1, 1, !FileCount!) Do (
set /a num=%%X +10
Type "%Directory%\activados.txt" | Findstr /I "!File%%X!" 1>NUL 2>&1
Echo !num!. !File%%X:.bat=! | MORE
)
me saca esto:
11. prueba1
12. prueba2
13. prueba3