Avatar billede thesurfer Nybegynder
17. oktober 2004 - 19:42 Der er 7 kommentarer og
1 løsning

Batch (DOS): fange input fra brugeren uden errorlevel?

Jeg prøver på at finde ud af, hvad brugeren trykker, ved CHOICE.. det skal lægges i en variabel, så det kan bruges senere..
Jeg giver brugeren mulighed for at angive CDROM drev..

Standard metoden er at bruge ERRORLEVEL, dvs:

if errorlevel 3 ...
if errorlevel 2 ...
if errorlevel 1 ...

Men jeg gider ikke at lave en errorlevel for A-Z..

Jeg har tænkt lidt over SET og CHOICE i kombination med | (pipe).. nogen ideer?
Avatar billede thesurfer Nybegynder
17. oktober 2004 - 21:13 #1
Jeg har lige fundet ud af, at man på 2000/XP kan bruge:

set /P VARIABELNAVN="Noget tekst her"

og så vil brugerens svar indsættes i variablen VARIABELNAVN..

Jeg skal bruge det i DOS, da det er ved boot... findes der noget tilsvarende?

Jeg håber bertelbrander kommer forbi.. :-)
Avatar billede thesurfer Nybegynder
17. oktober 2004 - 21:43 #2
Kilde: http://users.cybercity.dk/~bse26236/batutil/help/CHOICE_E.HTM

Jeg fandt dette (indsatte bare linien if not "%drive%"=="" goto ESCaped!):

@echo off

:test!
set drive=
 
    choice /n/cABCDEFGHIJKLMNOPQRSTUVWXYZ Choose a drive letter:
    if not errorlevel 002 for %%v in ( goto:ESCaped! ) do %%v
    set drive=Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
    for %%v in (%drive%) do if not errorlevel %%v set drive=%%v:
    echo ------------------- %drive%
    if not "%drive%"=="" goto ESCaped!
    goto test!
:ESCaped!


Jeg forstår ikke helt koden, men det ser ud til at virke..
Avatar billede thesurfer Nybegynder
17. oktober 2004 - 21:47 #3
Det kan forkortes ned til:

@echo off
set drive=
choice /n/cABCDEFGHIJKLMNOPQRSTUVWXYZ Choose a drive letter:
set drive=Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
for %%v in (%drive%) do if not errorlevel %%v set drive=%%v
set drive=%drive%:
echo %drive%

Hvis man så trykker "A", skriver den "A:".
Avatar billede bertelbrander Novice
17. oktober 2004 - 21:56 #4
Jeg forstår heller ikke koden, den virker ikke på XP.
Avatar billede thesurfer Nybegynder
17. oktober 2004 - 22:00 #5
Virker set /P VARIABELNAVN="Noget tekst her" ikke i XP?

Det skulle den gerne..
Avatar billede thesurfer Nybegynder
17. oktober 2004 - 22:06 #6
Koden fra 17/10-2004 21:47:33 virker vist ikke i XP, da det er "DOS kode".. XP har nogle andre funktioner/programmer (interne og eksterne)..
Avatar billede bertelbrander Novice
17. oktober 2004 - 22:13 #7
Jo, XP har "Set /P"

Jeg forstår ikke hvad denne linie skal gøre:
if not errorlevel 002 for %%v in ( goto:ESCaped! ) do %%v

I XP kan man:
for /F "tokens=%errorlevel%" %%I in ("A B C D osv") do set Drive=%%I

NT/2000/XP har ikke choice, 95/98/ME har ikke "Set /P"
Avatar billede thesurfer Nybegynder
17. oktober 2004 - 22:14 #8
Jeg har smidt de overflødige linier væk, i min kommentar 17/10-2004 21:47:33
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester