Cmd scripting hulp nodig

Status
Niet open voor verdere reacties.

alain1988

Terugkerende gebruiker
Lid geworden
29 jan 2010
Berichten
1.175
Code:
@ECHO OFF
GOTO MENU
:menu
echo.
TITLE Menu Alain's Applications
echo welk programma wil je starten
echo.
echo.
echo keuze
echo.
cd c:/users/admin/desktop/batch scirpts/
echo 1 open ASSOC.bat
echo 2 open CHDSK.bat
echo 3 open choise.bat
echo 4 open ControlUserpasswords.bat
echo 5 open defragc.bat
echo 6 open FSUTIL.bat
echo 7 open mmc.bat
echo 8 open netstat.bat
echo 9 open ping.bat
echo 10 open tasklist.bat
echo 11 Quit
echo.
pause
CHOICE.EXE /c:1 2 3 4 5 6 7 8 9 10 11 /n/S uw keuze:
goto %errorlevel%

if errorlevel 11 goto quit
if errorlevel 10 goto tasklist.bat
if errorlevel 9 goto ping.bat
if errorlevel 8 goto netstat.bat
if errorlevel 7 goto mmc.bat
if errorlevel 6 goto FSUTIL.bat
if errorlevel 5 goto defragc.bat
if errorlevel 4 goto ControlUserpasswords.bat
if errorlevel 3 goto choise.bat
if errorlevel 2 goto CHDSK.bat
if errorlevel 1 goto ASSOC.bat

:tasklist
start %desktop%/batch scirpts/tasklist.bat
:ping
start %desktop%/batch scirpts/ping.bat
:netstat
start %desktop%/batch scirpts/netstat.bat
:mmc
start %desktop%/batch scirpts/mmc.bat
:FSUTIL
start %desktop%/batch scirpts/fsutil.bat
:defragc
start %desktop%/batch scirpts/defragc.bat
:ControlUserpasswords
start %desktop%/batch scirpts/ControlUserpasswords.bat
:choise
start %desktop%/batch scirpts/choise.bat
:CHDSK
start %desktop%/batch scirpts/chdsk.bat
:ASSOC
start %desktop%/batch scirpts/assoc.bat
pause
:quit
exit
:end
pause
ik heb hier een scriptje geschreven (voor school trouwens) dit scriptje moet een menu worden die andere scripts moet oproepen die indezelfde folder worden opgeropen.

nu is het volgende probleem het menu word opgeropen maar als ik een keuze wil maken sluit het programma ik denk dat het probleem ergens ligt bij

CHOICE.EXE /c:1 2 3 4 5 6 7 8 9 10 11 /n/S uw keuze:
goto %errorlevel%

maar weet het niet zeker laat staan hoe ik het moet oplossen
 
Het Choice 'programma' is niet beschikbaar in CMD, want het is een oud MS-DOS commando. Het is (dus) niet onder XP beschikbaar, en ik ga ervan uit dat het ook in Vista etc. niet beschikbaar is.

Gebruik daarvoor in de plaats:
Set /P keuze="Uw keuze "
Goto %keuze%

Er staat trouwens nog een fout in je script: Stel dat ik Tasklist zou kiezen, dan worden ook de zaken die er onder staan uitgevoerd. Dus als je wilt dat het script daarna afsluit, dan zul je na de gewenste actie per keuze nog goto end of goto quit moeten neerzetten.

Succes,

Tijs.
 
?

kan je eens posten hoe jij het zou doen mij lukt het niet zoal jij zegt het is toch zo dat je bedoeld he :

Code:
SET /P keuze=1 2 3 4 5 6 7 8 9 10 11  "uw keuze":
goto %keuze%
 
Wordt anders:

Code:
@ECHO OFF
GOTO MENU
:menu
echo.
TITLE Menu Alain's Applications
echo welk programma wil je starten
echo.
echo.
echo keuze
echo.
cd c:/users/admin/desktop/batch scirpts/
echo 1 open ASSOC.bat
echo 2 open CHDSK.bat
echo 3 open choise.bat
echo 4 open ControlUserpasswords.bat
echo 5 open defragc.bat
echo 6 open FSUTIL.bat
echo 7 open mmc.bat
echo 8 open netstat.bat
echo 9 open ping.bat
echo 10 open tasklist.bat
echo 11 Quit
echo.
pause
Set /P keuze="Uw keuze "
if %keuze%== 11 goto quit
if %keuze%== 10 goto tasklist
if %keuze%== 9 goto ping
if %keuze%== 8 goto netstat
if %keuze%== 7 goto mmc
if %keuze%== 6 goto FSUTIL
if %keuze%== 5 goto defragc
if %keuze%== 4 goto ControlUserpasswords
if %keuze%== 3 goto choise
if %keuze%== 2 goto CHDSK
if %keuze%== 1 goto ASSOC
:tasklist
start %desktop%/batch scirpts/tasklist.bat
goto end
:ping
start %desktop%/batch scirpts/ping.bat
goto end
:netstat
start %desktop%/batch scirpts/netstat.bat
goto end
:mmc
start %desktop%/batch scirpts/mmc.bat
goto end
:FSUTIL
start %desktop%/batch scirpts/fsutil.bat
goto end
:defragc
start %desktop%/batch scirpts/defragc.bat
goto end
:ControlUserpasswords
start %desktop%/batch scirpts/ControlUserpasswords.bat
goto end
:choise
start %desktop%/batch scirpts/choise.bat
goto end
:CHDSK
start %desktop%/batch scirpts/chdsk.bat
goto end
:ASSOC
start %desktop%/batch scirpts/assoc.bat
goto end
pause
:quit
exit
:end
pause

[De doel-labels klopten ook niet: daar hoort .bat niet achter. Zie dat je een label :ping hebt maar in je originele file goto ping.bat had staan. Verder vraag ik me af of %desktop% nuttig vertaald wordt, maar dat weet jij beter dan ik.]

Tijs.
 
Laatst bewerkt:
ok effe gezocht en probleem gevonden bedankt allesinds
 
Ik zou ook "if not %keuze%==* goto *" (bij *'s zelf invullen)
Alles doen met "not" ertussen, hiermee kan je er voor zorgen dat als iemand een optie kiest die niet bestaat, dat hij/zij terug gaat naar het keuze menu

Dan is het nu:

Code:
@ECHO OFF
TITLE Menu Alain's Applications
:menu
echo.
echo welk programma wil je starten?
echo.
echo.
echo opties:
echo.
cd c:\users\admin\desktop\batch scripts
echo [1] open ASSOC.bat
echo [2] open CHDSK.bat
echo [3] open choise.bat
echo [4] open ControlUserpasswords.bat
echo [5] open defragc.bat
echo [6] open FSUTIL.bat
echo [7] open mmc.bat
echo [8] open netstat.bat
echo [9] open ping.bat
echo [10] open tasklist.bat
echo [11] Quit
echo.
Set /P keuze=Uw keuze :
if %keuze%== 11 goto quit
if %keuze%== 10 goto tasklist
if %keuze%== 9 goto ping
if %keuze%== 8 goto netstat
if %keuze%== 7 goto mmc
if %keuze%== 6 goto FSUTIL
if %keuze%== 5 goto defragc
if %keuze%== 4 goto ControlUserpasswords
if %keuze%== 3 goto choise
if %keuze%== 2 goto CHDSK
if %keuze%== 1 goto ASSOC
if not %keuze%==11 goto wrong
if not %keuze%==10 goto wrong
if not %keuze%==9 goto wrong
if not %keuze%==8 goto wrong
if not %keuze%==7 goto wrong
if not %keuze%==6 goto wrong
if not %keuze%==5 goto wrong
if not %keuze%==4 goto wrong
if not %keuze%==3 goto wrong
if not %keuze%==2 goto wrong
if not %keuze%==1 goto wrong

:tasklist
start "C:\Users\%username%\Desktop\batch scirpts\tasklist.bat"
goto end

:ping
start "C:\Users\%username%\Desktop\batch scirpts\ping.bat"
goto end

:netstat
start "C:\Users\%username%\Desktop\batch scirpts\netstat.bat"
goto end

:mmc
start "C:\Users\%username%\Desktop\batch scirpts\mmc.bat"
goto end

:FSUTIL
start "C:\Users\%username%\Desktop\batch scirpts\fsutil.bat"
goto end

:defragc
start "C:\Users\%username%\Desktop\batch scirpts\defragc.bat"
goto end

:ControlUserpasswords
start "C:\Users\%username%\Desktop\batch scirpts\ControlUserpasswords.bat"
goto end

:choise
start "C:\Users\%username%\Desktop\batch scirpts\choise.bat"
goto end

:CHDSK
start "C:\Users\%username%\Desktop\batch scirpts\chdsk.bat"
goto end

:ASSOC
start "C:\Users\%username%\Desktop\batch scirpts\assoc.bat"
goto end
pause

:quit
exit

:wrong
cls
echo Invalid Option!
ping localhost -n 2 >nul
goto menu

:end
pause
p.s.
Ik heb nog wat aanpassingen gemaakt om het duidelijker te maken.(of een typo weghalen)
Dit zijn de veranderingen:

-bij locaties, zoals C:\windows gebruik \ inplaats van /
-ook als er een spatie in een mapnaam zit (zoals bij batch scirpt), moet je ""'s(quote's) gebruiken, anders werkt het niet
-%desktop% naar C:\Users\%username%\Desktop\
-getallen tussen []'s gezet
-Pause na opties weggehaald (set /p keuze is ook al een soort pause:thumb:)
-De "if not %keuze%==* goto wrong" toegevoegd.
-het TITLE commando omhoog gezet
-:wrong toegevoegd, als iemand nu een foute optie kiest komt er te staan "Invalid Option", en na ongeveer 1 seconde gaat hij weer terug naar het menu.
-Ik zie een map genaamd batch "scirpt", maar ik denk dat de term die je zoekt "script" is


Verder nog wat kleine andere aanpassingen.
en als je wilt dat de batch die gestart word (vanuit deze batch) eerst helemaal uitgevoerd wordt voordat de eerste batch verder gaat, verplaats dan de START commando's met CALL commando's(werkt alleen met andere batch's oproepen)
Nu moet hij helemaal goed zijn voor gebruik!:) (kan hem alleen niet helemaal testen omdat ik zelf de bestanden etc. niet heb)
Veel succes!

Als er nog vragen/onduidelijkheden zijn, vraag maar raak:d

Mvg,

Nitefog
 
Laatst bewerkt:
Als aanvulling op nitefog:

- Alle "If Nots" kun je ook door 1 regel vervangen "Goto Wrong".
- Voor "Mooiheid" kun je tussen regel 3 en 4 nog een cls plaatsen zodat je bij het starten van het menu altijd een schoon scherm hebt.

Daarnaast vraag ik mij af waarom je een "menu" script bouwt die allemaal losse scripts aanroept. waarom gooi je niet alles in 1 script? de meeste van die scripts lijken mij ook maar te bestaan uit ongeveer 3 regels
 
@Ellasar
- Alle "If Nots" kun je ook door 1 regel vervangen "Goto Wrong".
Wist ik niet:) Is ineens een stuk minder typwerkt geworden:thumb:
- Voor "Mooiheid" kun je tussen regel 3 en 4 nog een cls plaatsen zodat je bij het starten van het menu altijd een schoon scherm hebt.
Ik dacht zelf dat ik die er al tussen had gezet:p
Waarschijnlijk alleen op mijn computer toen ik heb testte:eek:

Daarnaast vraag ik mij af waarom je een "menu" script bouwt die allemaal losse scripts aanroept. waarom gooi je niet alles in 1 script? de meeste van die scripts lijken mij ook maar te bestaan uit ongeveer 3 regels
Ik weet niet zeker wat je hiermee bedoelt, maar volgens mij wil de TS de gebruiker de optie's geven om scripts uit te voeren.
Maar aangezien al die anderen ook batch's zijn, kan je de inhoud daarvan ook in dit .batfiletje plakken. Dan heb je 1 file in plaats van ±12 :)
 
Laatst bewerkt:
Gokje ;)

Scheelt je alvast wat scrippies

Code:
@ECHO OFF
TITLE Menu Alain's Applications
:menu
CLS
echo.
echo welk programma wil je starten?
echo.
echo.
echo opties:
echo.
cd c:\users\admin\desktop\batch scripts
echo [1] open ASSOC.bat
echo [2] open CHDSK.bat
echo [3] open choise.bat
echo [4] open ControlUserpasswords.bat
echo [5] open defragc.bat
echo [6] open FSUTIL.bat
echo [7] open mmc.bat
echo [8] open netstat.bat
echo [9] open ping.bat
echo [10] open tasklist.bat
echo [11] Quit
echo.
Set /P keuze=Uw keuze :
if %keuze%== 11 goto quit
if %keuze%== 10 goto tasklist
if %keuze%== 9 goto ping
if %keuze%== 8 goto netstat
if %keuze%== 7 goto mmc
if %keuze%== 6 goto FSUTIL
if %keuze%== 5 goto defragc
if %keuze%== 4 goto ControlUserpasswords
if %keuze%== 3 goto choise
if %keuze%== 2 goto CHDSK
if %keuze%== 1 goto ASSOC
goto wrong

:tasklist
start "C:\Users\%username%\Desktop\batch scirpts\tasklist.bat"
goto end

:ping
Set /P System=Voer Systeemnaam of IP in:
Set /P Times=Voer aantal keer in:

Ping %system% /n %times%
pause
goto end

:netstat
start "C:\Users\%username%\Desktop\batch scirpts\netstat.bat"
goto end

:mmc
MMC.Exe
goto end

:FSUTIL
start "C:\Users\%username%\Desktop\batch scirpts\fsutil.bat"
goto end

:defragc
defrag.exe c: /U
goto end

:ControlUserpasswords
control userpasswords2
goto end

:choise
start "C:\Users\%username%\Desktop\batch scirpts\choise.bat"
goto end

:CHDSK
Set /P drive=Voer schijfletter in:
chkdsk.exe %drive% /F
goto end

:ASSOC
start "C:\Users\%username%\Desktop\batch scirpts\assoc.bat"
goto end
pause

:quit
exit

:wrong
cls
echo Invalid Option!
ping localhost -n 2 >nul
goto menu

:end
pause
 
Answer to your question

!!!!!!!!!!!!!!!!!!!!!!!! change + to : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
the correct code is:


@ECHO OFF
color 0a

+menu
echo.
TITLE Menu Alain's Applications
echo welk programma wil je starten
echo.
echo.
echo keuze
echo.
echo 1 open ASSOC.bat
echo 2 open CHDSK.bat
echo 3 open choise.bat
echo 4 open ControlUserpasswords.bat
echo 5 open defragc.bat
echo 6 open FSUTIL.bat
echo 7 open mmc.bat
echo 8 open netstat.bat
echo 9 open ping.bat
echo 10 open tasklist.bat
echo 11 Quit
echo.
pause
set /p errorlevel=...
if %errorlevel% equ 11 goto quit
if %errorlevel% equ 10 goto tasklist
if %errorlevel% equ 9 goto ping
if %errorlevel% equ 8 goto netstat
if %errorlevel% equ 7 goto mmc
if %errorlevel% equ 6 goto FSUTIL
if %errorlevel% equ 5 goto defragc
if %errorlevel% equ 4 goto ControlUserpasswords
if %errorlevel% equ 3 goto choise
if %errorlevel% equ 2 goto CHDSK
if %errorlevel% equ 1 goto ASSOC
goto menu
## you can also use == instead of equ ##############

+tasklist
start %desktop%/batch scirpts/tasklist.bat
goto end

+ping
start %desktop%/batch scirpts/ping.bat
goto end

+netstat
start %desktop%/batch scirpts/netstat.bat
goto end

+mmc
start %desktop%/batch scirpts/mmc.bat
goto end

+FSUTIL
start %desktop%/batch scirpts/fsutil.bat
goto end

+defragc
start %desktop%/batch scirpts/defragc.bat
goto end

+ControlUserpasswords
start %desktop%/batch scirpts/ControlUserpasswords.bat
goto end

+choise
start %desktop%/batch scirpts/choise.bat
goto end

+CHDSK
start %desktop%/batch scirpts/chdsk.bat
goto end

+ASSOC
start %desktop%/batch scirpts/assoc.bat
goto end
+quit
exit

+end
pause


Hope you enjoy
 
Laatst bewerkt:
@echo off
CHOICE /C:123456789 /N /M "Keuze hier: "

hoger dan 10 kan niet.
das je probleem als eerste
 
Dan zet ik er maar een slot op.
de forum regels zeggen dat je na drie maanden het topic met rust kunt laten.
Waarschijnlijk heeft de sectiemoderator dit niet gezien anders was het al eerder op slot gegaan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan