Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Función para escanear directorios y obtener los archivos Lua con sus rutas y tamaños
- local function scanFiles(directory)
- local luaFiles = {}
- local files = fs.list(directory)
- for _, file in ipairs(files) do
- local path = fs.combine(directory, file)
- if fs.isDir(path) then
- scanFiles(path) -- Escanea subdirectorios recursivamente
- elseif file:match("%.lua$") then
- local size = fs.getSize(path)
- table.insert(luaFiles, { path = path, size = size })
- end
- end
- return luaFiles
- end
- -- Función para mostrar un menú paginado
- local function showMenu(files, currentPage, pageSize)
- local totalPages = math.ceil(#files / pageSize)
- currentPage = math.max(1, math.min(currentPage, totalPages))
- term.clear()
- term.setCursorPos(1, 1)
- print("Explorador de archivos Lua")
- print("--------------------------")
- local startIdx = (currentPage - 1) * pageSize + 1
- local endIdx = math.min(startIdx + pageSize - 1, #files)
- for i = startIdx, endIdx do
- local file = files[i]
- print(i .. ". " .. file.path)
- print(" Tamaño: " .. file.size .. " bytes")
- end
- print("--------------------------")
- print("Página " .. currentPage .. "/" .. totalPages)
- end
- -- Función para ejecutar un archivo Lua en un shell diferente
- local function runFile(file)
- if fs.exists(file) and not fs.isDir(file) then
- shell.openTab(file)
- else
- print("El archivo no existe o es un directorio.")
- end
- end
- -- Programa principal
- local files = scanFiles("/")
- local currentPage = 1
- local pageSize = 10
- local running = true
- while running do
- showMenu(files, currentPage, pageSize)
- print("0. Salir")
- write("Selecciona un archivo para ejecutar (número de archivo o página): ")
- local input = read()
- if input == "0" then
- running = false
- elseif tonumber(input) then
- local fileIdx = tonumber(input)
- if fileIdx >= 1 and fileIdx <= #files then
- runFile(files[fileIdx].path)
- write("Presiona cualquier tecla para continuar...")
- read()
- else
- print("Índice de archivo inválido.")
- sleep(2)
- end
- elseif input == "p" or input == "P" then
- currentPage = currentPage - 1
- elseif input == "n" or input == "N" then
- currentPage = currentPage + 1
- else
- print("Entrada inválida. Inténtalo nuevamente.")
- sleep(2)
- end
- end
Advertisement
Comments
-
- The code provided is a Lua script that contains several functions to scan directories and retrieve Lua files with their paths and sizes, display a paginated menu, and execute Lua files in a different shell.
Add Comment
Please, Sign In to add comment