Avatar billede azerty Juniormester
08. juni 2008 - 15:12 Der er 15 kommentarer og
1 løsning

Command prompt-forskelle i 9x, Me, 2000 og XP

Følgende batchfil kører efter hensigten i Windows 2000 og XP:

======
@echo off

ver | find "5.10.2600" > nul
if %ERRORLEVEL% == 0 goto winxp

ver | find "5.00.2195" > nul
if %ERRORLEVEL% == 0 goto w2k

ver | find "4.90.3000" > nul
if %ERRORLEVEL% == 0 goto winme

ver | find "4.10.1998" > nul
if %ERRORLEVEL% == 0 goto win98

start error.txt
goto end

:winxp
start batch1.bat
goto end

:w2k
start batch2.bat
goto end

:winme
start batch3.bat
goto end

:win98
start batch4.bat
goto end

:end
exit

=========

Windows Me og Windows 98 skøjter bare igennem "ver | find"-kommandoerne øverst i filen og ender med at køre error.txt. De burde være stoppet ved henholdsvis etiketten "winme" og "win98", have eksekveret en batchfil og gået til "end". Men i DOS prompten meldes syntaksfejl:

if == 0 goto winxp
Syntaksfejl

if == 0 goto w2k
Syntaksfejl

if == 0 goto winme
Syntaksfejl

if == 0 goto win98
Syntaksfejl

Understøttes denne "ver | find" slet ikke i Me og 98?

Jeg kunne lave en klassisk "if exist", men det vil vel kræve, at jeg kan finde en eller anden fil, som KUN findes i Me og KUN findes i 98.

Men det er lidt bøvlet. Er der en workaround om problemet?
Avatar billede azerty Juniormester
08. juni 2008 - 16:02 #1
Ups... har måske løst problemet selv:

ver | find "4.90.3000" > nul
if ERRORLEVEL 0 goto winme
if ERRORLEVEL 1 goto 98

:98
ver | find "4.10.1998" > nul
if ERRORLEVEL 0 goto winme
if ERRORLEVEL 1 goto error

:error
start error.txt
Avatar billede azerty Juniormester
08. juni 2008 - 16:03 #2
Jeg hører dog gerne nærmere om gode ideer i denne forbindelse.
Avatar billede azerty Juniormester
09. juni 2008 - 00:38 #3
NÆ, DET DUER IKKE


H - J - Æ - L - P
09. juni 2008 - 06:49 #4
Nu har jeg ikke liiiige nogen Wintendo'98 eller ME ved fingrene såååå...

Forslag ->

fra
if %ERRORLEVEL% == 0 goto winxp
til
if "%ERRORLEVEL%" == 0 goto winxp

eller

if "x%ERRORLEVEL%x" == "x0x" goto winxp

-------
Avatar billede azerty Juniormester
03. juli 2008 - 11:33 #5
Undskyld forsinkelsen. Jeg havde glemt spørgsmålet:

Næh, desværre. Det ser ud til, at Windows 98 og Me afviser alt med % som "syntaksfejl".
03. juli 2008 - 18:52 #6
I en Command Prompt at skrive

SET

og fortæl hvad den siger/skriver ?
Avatar billede azerty Juniormester
27. september 2008 - 22:49 #7
Den skriver de sædvanlige/forventelege stier med %-tegn omkring. Man kan sagtens bruge disse "wildcards" i dos-kommandoerne, men "windows-DOS" melder syntaksfejl på ver | find ligemeget hvordan jeg omskriver den.
28. september 2008 - 13:04 #8
" syntaksfejl på ver | find "

Beskriv lige lidt mere hvad du gør hvor / i hvilket OS ?
Avatar billede azerty Juniormester
12. oktober 2008 - 19:14 #9
Den skriver simpelthen:

syntaksfejl

...og går videre til næste linje og udfører kommandoen.

Jeg har udtænkt følgende work-around:

--------------------
@echo off

ver | find "5.00.2195" > nul
if %ERRORLEVEL% == 0 goto 2000

if exist %windir%\system32\ntoskrn*.exe goto nt

"nogle 9x-kommandoer"
goto end

:2000
"nogle w2k(nt)-kommandoer"
goto end

:nt
"nogle nt-kommandoer"
goto end

:end
exit
--------------------

1) Hvis OS er Windows 2000 Professional, udføres eksklusive w2k-kommandoer under label :2000

2) Hvis OS er 2003/XP/Vista, udføres eksklusive nt-kommandoer under label :nt, idet disse OS'er alle har en ntoskrn*.exe i %windir%\System32.

3) Hvis OS er 9x/Me, springes de første tre linjer simpelthen over, og programmet går i gang med at udføre "nogle 9x-kommandoer".

Er det helt tosset, karise_larry?

Undskyld responstiden!
12. oktober 2008 - 19:50 #10
Du _har_ altså "adgang" til nogle WIN95/85 spiller ?

Tanke: Din 'label' 2000 ... prøv med BOGSTAVER istedet ? En label må måske ikke bare være et alá 2000 ?

-------
12. oktober 2008 - 20:04 #11
Leg lidt med

ver > %TEMP%\check.txt
find /C "XP" %TEMP%\check.txt
if %ERRORLEVEL% == 0 goto XP
Avatar billede azerty Juniormester
12. oktober 2008 - 23:36 #12
Ja, jeg har en gammel svend med win98 - den kan ikke så meget, men den er god at afprøve slige ting på. Den den også trække Me.

Det med bogstaverne... jeg prøver.

Den anden:

ver >

... skal jeg lige forstå. Når jeg gør dét, vil jeg finde tid til at afprøve det.

Tak for den vedholdende interesse!
13. oktober 2008 - 00:06 #13
Fidusen er at reslutatet af "ver" skrives ikke på skærmen men lægges i en (TEMP)fil.
Derefter søges (find) i denne fil efter bestemte ord/tal/bogstaver. Hvis der _ikke_ bliver fundet noget bliver %ERRORLEVEL% til "1" ...
osv osv osv ...
Avatar billede azerty Juniormester
30. oktober 2008 - 14:20 #14
Ohh.... det skal jeg prøve.
Avatar billede azerty Juniormester
25. maj 2009 - 05:57 #15
Jeg har lige - i et andet spørgsmål (http://www.eksperten.dk/spm/875300) - brokket mig lidt over "løse ender" på Eksperten, hvor spørgeren ikke følger op på sit spørgsmål. Så kom jeg i tanke om, at jeg selv har et gammelt spørgsmål, som jeg ikke har fået afsluttet.

Det prøver jeg nu :-)

Læg et svar, karise_larry, tak.
Avatar billede azerty Juniormester
02. september 2010 - 19:57 #16
Nå, nu har det vist været åbnet (for) længe nok...
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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

IT-JOB

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering

Netcompany A/S

Managing Architect

Politiets Efterretningstjeneste

IT Sikkerhedsarkitekt i PET