Hi ,
ich versuche mich krampfhaft im BATCH schreiben.
Ich brauche ein Auswahlmenue, welches ich mit
Entspann Dich wieder, Dir kann gehilfen werden
set /P meineAuswahl=Bitte Auswaehlen:
erstelle.
Problem dabei … ich moechte, dass zur weiteren Verarbeitung
aus einem definiertem Verzeichnis die darin enthaltenen
Verzeichnisnamen als Menuepunkte erscheinen. Da es bei BATCH
ja keine Arrays gibt weiss ich nicht , wie ich weiter vorgehen
kann.
Hemdsärmelig. Steinzeitlich. Nur ein völliger Vollidiot, oder ein Freak macht sowas mit einer Batch.
Aber gut. Gott sei Dank bin ich so ein Freak aus der Steinzeit, als es den ROM Basic Interpreter gerade nicht mehr und den Windows Script Hos gerade noch nicht gab
@echo off
rem read command line param and remove any quotes
set MyPath=%1
set myPath=%MyPath:"=%
rem if no command line parameter specified, use current directory as default
if „%MyPath%“ EQU „“ Set MyPath=%CD%
rem build the menu
BuildMenu
rem draw the menu
Call rawMenu
rem error handling if empty or non-existent directory was spcified
If %MenuItemCounter% LSS 1 (Call :Error „No directories found to build a menu“) & (Goto End)
rem prompt the user to select
echo.
Set /P MenuSelection="Please select a menu item [1-%MenuItemCounter%]:
rem End selected?
If %MenuSelection% EQU 0 Goto End
rem Range cheking
If %MenuSelection% LSS 1 (Call :Error „Selection is not in range [1-%MenuItemCounter%] - please try again“) & (Goto BuildMenu)
If %MenuSelection% GTR %MenuItemCounter% (call :Error „Selection is not in range [1-%MenuItemCounter%] - please try again“) & (Goto BuildMenu)
rem Get the menu item by number
Call :Get1MenuItem %MenuSelection%
If „%MenuItem%“ EQU „“ (Call :Error „Inconsistent Menu“) & (Goto :End)
Echo You selected item: %MenuSelection% (directory: %MenuItem%)
Pause
Goto BuildMenu
DrawMenu
rem draw the menu
Set MenuItemCounter=0
cls
echo Menu: %MyPath%
echo.
for /F %%i in (‚DIR „%MyPath%“ /a:d /b‘) do Call raw1MenuItem „%%i“
echo.
Echo [0] End this menu
Goto :EOF
Draw1MenuItem
rem draw menu items and set the maximum number of items (MenuItemCounter)
Set /A MenuItemCounter += 1
Set Item=%1
Set Item=%Item:"=%
Echo [%MenuItemCounter%] %Item%
Goto :EOF
Get1MenuItem
Set FindCounter=%1
Set MenuItem=
Set Counter=0
for /F %%i in (‚DIR „%MyPath%“ /a:d /b‘) do Call :Find1MenuItem „%%i“ %Counter%
Set MenuItem=%MenuItem:"=%
Goto :EOF
Find1MenuItem
Set /A Counter += 1
If %Counter% EQU %FindCounter% Set MenuItem=%1
Goto :EOF
Error
Set Message=%1
Set Message=%Message:"=%
echo.
echo Error: %Message%
echo.
Pause
Goto :EOF
End
Speichere das Teil als menu.bat, und rufe es auf entweder mit
menu
(nimmt das aktuelle Verzeichnis als Grundlage) oder mit
menu "