Das Drecks-DOS nervt mich seit einer Stunde ....
Muss nur wissen ob ein Parameter 1 oder 2 Stellen lang ist, sonst nix ....
Lösung ???
PS : Bitte keine Qbasic, REXX oder sonstwas Varianten, muss auf x Maschinen laufen und ich inst. nicht überall noch irgendwas
Scheiss DOS
wie wär's mit Assembler, z. B.Kawa hat geschrieben:Das Drecks-DOS nervt mich seit einer Stunde ....
Muss nur wissen ob ein Parameter 1 oder 2 Stellen lang ist, sonst nix ....
Lösung ???
PS : Bitte keine Qbasic, REXX oder sonstwas Varianten, muss auf x Maschinen laufen und ich inst. nicht überall noch irgendwas
http://www.bestdiskrecovery.com/ngasm/N ... anual.html
Code: Alles auswählen
set myvar=a
if %myvar%==%myvar:~0,1% (
echo einstellig
) ELSE (
echo zweistellig
)
Funktioniert so auf jeden Fall in einer cmd Konsole unter Windows.
[CENTER]Innteligentister User 2006[/CENTER]
@Pernod Danke für den Tipp, hat geholfen.
Das ganze hat sich allerdings noch ausgeweitet, der Parameter kann 0-160 lang sein
1. Variante :
if "%_param1:~5,1%"=="" set /a _length=5
if "%_param1:~4,1%"=="" set /a _length=4
if "%_param1:~3,1%"=="" set /a _length=3
if "%_param1:~2,1%"=="" set /a _length=2
if "%_param1:~1,1%"=="" set /a _length=1
Geht ja noch mit 5 aber 160
Hab's dann mit FOR probiert, das dumme daran war nur, dass die ~-Syntax völlig stur keine Variablen akzeptiert , d.h das IF kannst im DO nicht einbauen !!!
Lösung :
@echo off
setlocal
set _param1=%1
set /a _length=999
IF [%1]==[] set _length=0
FOR /L %%G IN (160,-1,1) DO (CALL SET _substr=%%_param1:~%%G,1%%& Call SET /A _G=%%G & CALL :testlength)
endlocal & set /a _return=%_length%
goto :eof
:testlength
if "%_substr%"=="" set /a _length=%_G%
goto :eof
Das ganze hat sich allerdings noch ausgeweitet, der Parameter kann 0-160 lang sein
1. Variante :
if "%_param1:~5,1%"=="" set /a _length=5
if "%_param1:~4,1%"=="" set /a _length=4
if "%_param1:~3,1%"=="" set /a _length=3
if "%_param1:~2,1%"=="" set /a _length=2
if "%_param1:~1,1%"=="" set /a _length=1
Geht ja noch mit 5 aber 160
Hab's dann mit FOR probiert, das dumme daran war nur, dass die ~-Syntax völlig stur keine Variablen akzeptiert , d.h das IF kannst im DO nicht einbauen !!!
Lösung :
@echo off
setlocal
set _param1=%1
set /a _length=999
IF [%1]==[] set _length=0
FOR /L %%G IN (160,-1,1) DO (CALL SET _substr=%%_param1:~%%G,1%%& Call SET /A _G=%%G & CALL :testlength)
endlocal & set /a _return=%_length%
goto :eof
:testlength
if "%_substr%"=="" set /a _length=%_G%
goto :eof
Auch schön:
Code: Alles auswählen
set tempfile=%temp%\argcount.vbs
echo WScript.Quit (Len(wscript.Arguments(0))) > %tempfile%
cscript.exe %tempfile% %1 //NOLOGO
set _length=%errorlevel%
echo %_length%
del %tempfile% /Q
[CENTER]Innteligentister User 2006[/CENTER]
- Suffbrueder
- Erfahrener Benutzer
- Beiträge: 1245
- Registriert: 07.12.2004, 17:32
- Wohnort: Basel, Budapest, Zeckenpfuhl..