Seite 1 von 1

Scheiss DOS

Verfasst: 09.04.2008, 00:53
von Kawa
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 :mad:

Verfasst: 09.04.2008, 04:16
von macau
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 :mad:
wie wär's mit Assembler, z. B.

http://www.bestdiskrecovery.com/ngasm/N ... anual.html

Verfasst: 09.04.2008, 08:38
von pernod

Code: Alles auswählen

set myvar=a

if %myvar%==%myvar:~0,1% (
echo einstellig
) ELSE (
echo zweistellig
)
Musst einfach vergleichen ob die ganze Variable mit der letzten Stelle der Variable identisch ist. Falls ja: Einstellig.

Funktioniert so auf jeden Fall in einer cmd Konsole unter Windows.

Verfasst: 09.04.2008, 23:37
von Kawa
@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 :eek:

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

Verfasst: 10.04.2008, 11:30
von Basl0r
zum glück gits lüt wo do druss chöme ;D

Verfasst: 10.04.2008, 13:20
von pernod
Geht es hier eigentlich um echtes DOS oder cmd.exe?

Verfasst: 10.04.2008, 15:58
von Kawa
cmd.exe natürlich, nicht command.com ...

PS : Keines der bisherigen Bsp. läuft unter command.com ;) ;)

Verfasst: 10.04.2008, 16:30
von pernod
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

Verfasst: 10.04.2008, 17:01
von Suffbrueder
C:\dos

C:\run dos

C:\run dos run

:cool: oldschool!

Verfasst: 10.04.2008, 20:01
von Kawa
pernod hat geschrieben:Auch schön:
Yep, sehr schön. So kann ich die Vorgaben meines Chefs umgehen, die temp. Files sieht er nie ...

PS : Ich konnte alle meine Probleme lösen, hab im Config.sys folgendes eingefügt :
Add BUGS=OFF