Scheiss DOS

Der Rest...
Antworten
Benutzeravatar
Kawa
Erfahrener Benutzer
Beiträge: 6069
Registriert: 22.12.2004, 16:36

Scheiss DOS

Beitrag 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:

Benutzeravatar
macau
Erfahrener Benutzer
Beiträge: 971
Registriert: 13.12.2004, 14:20

Beitrag 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

Benutzeravatar
pernod
Neuer Benutzer
Beiträge: 13
Registriert: 04.10.2005, 12:07

Beitrag 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.
[CENTER]Innteligentister User 2006[/CENTER]

Benutzeravatar
Kawa
Erfahrener Benutzer
Beiträge: 6069
Registriert: 22.12.2004, 16:36

Beitrag 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

Benutzeravatar
Basl0r
Erfahrener Benutzer
Beiträge: 288
Registriert: 05.01.2005, 12:27
Wohnort: Basel

Beitrag von Basl0r »

zum glück gits lüt wo do druss chöme ;D
Doug:"Arthur, dein Toast brennt an"
Arthur:"Das weiss ich selbst...!!!"

Benutzeravatar
pernod
Neuer Benutzer
Beiträge: 13
Registriert: 04.10.2005, 12:07

Beitrag von pernod »

Geht es hier eigentlich um echtes DOS oder cmd.exe?
[CENTER]Innteligentister User 2006[/CENTER]

Benutzeravatar
Kawa
Erfahrener Benutzer
Beiträge: 6069
Registriert: 22.12.2004, 16:36

Beitrag von Kawa »

cmd.exe natürlich, nicht command.com ...

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

Benutzeravatar
pernod
Neuer Benutzer
Beiträge: 13
Registriert: 04.10.2005, 12:07

Beitrag 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
[CENTER]Innteligentister User 2006[/CENTER]

Benutzeravatar
Suffbrueder
Erfahrener Benutzer
Beiträge: 1245
Registriert: 07.12.2004, 17:32
Wohnort: Basel, Budapest, Zeckenpfuhl..

Beitrag von Suffbrueder »

C:\dos

C:\run dos

C:\run dos run

:cool: oldschool!
Where's your father, where's your father,
where's your father, referee?
You ain't got one,
cuz you're a bastard,
you're a bastard, referee!

Benutzeravatar
Kawa
Erfahrener Benutzer
Beiträge: 6069
Registriert: 22.12.2004, 16:36

Beitrag 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

Antworten