petterg Skrevet 14. september 2008 Del Skrevet 14. september 2008 (endret) I et script har en variabel fått verdien "00012345" (tekst). Den videre bruken av variabelen krever at den ikke har ledende nuller, altså bare "12345" (tekst). Hvordan gjøres dette? Det nærmeste jeg har vært er: for /F "tokens=1 delims=0" %%i IN ("00012345") DO ( echo %%i ) Men den driter seg ut når det dukker opp nuller andre steder i tallet. F.eks "00120345" - som blir til bare "12" Løsning: set TALL=00012034050 for /f "tokens=1* delims=0" %%a IN ("10%TALL%") DO set STRIPPET=%%b echo %STRIPPET% Takk til aklla Endret 14. september 2008 av petterg Lenke til kommentar
aklla Skrevet 14. september 2008 Del Skrevet 14. september 2008 hvordan driter den seg ut på 00120345? Lenke til kommentar
petterg Skrevet 14. september 2008 Forfatter Del Skrevet 14. september 2008 den deler ved hver 0. Den dytter altså ut 12 i steden for 120345 Lenke til kommentar
petterg Skrevet 14. september 2008 Forfatter Del Skrevet 14. september 2008 Da var dette løst... på et vis. Metoden forutsetter maks 10 ledende nuller. Hvis noen har noe litt mer praktisk eksempel er det fint om dere gir lyd. set pgcid=000120340 echo %pgcid:~0,1% IF "%pgcid:~0,1%" NEQ "0" GOTO STRIP00 IF "%pgcid:~1,1%" NEQ "0" GOTO STRIP01 IF "%pgcid:~2,1%" NEQ "0" GOTO STRIP02 IF "%pgcid:~3,1%" NEQ "0" GOTO STRIP03 IF "%pgcid:~4,1%" NEQ "0" GOTO STRIP04 IF "%pgcid:~5,1%" NEQ "0" GOTO STRIP05 IF "%pgcid:~6,1%" NEQ "0" GOTO STRIP06 IF "%pgcid:~7,1%" NEQ "0" GOTO STRIP07 IF "%pgcid:~8,1%" NEQ "0" GOTO STRIP08 IF "%pgcid:~9,1%" NEQ "0" GOTO STRIP09 IF "%pgcid:~10,1%" NEQ "0" GOTO STRIP10 :STRIP00 set pgcids=%pgcid% GOTO STRIPED :STRIP01 set pgcids=%pgcid:~1% GOTO STRIPED :STRIP02 set pgcids=%pgcid:~2% GOTO STRIPED :STRIP03 set pgcids=%pgcid:~3% GOTO STRIPED :STRIP04 set pgcids=%pgcid:~4% GOTO STRIPED :STRIP05 set pgcids=%pgcid:~5% GOTO STRIPED :STRIP06 set pgcids=%pgcid:~6% GOTO STRIPED :STRIP07 set pgcids=%pgcid:~7% GOTO STRIPED :STRIP08 set pgcids=%pgcid:~8% GOTO STRIPED :STRIP09 set pgcids=%pgcid:~9% GOTO STRIPED :STRIP10 set pgcids=%pgcid:~10% GOTO STRIPED :STRIPED echo %pgcids% Lenke til kommentar
Foxboron Skrevet 14. september 2008 Del Skrevet 14. september 2008 ser litt upraktisk ut... men men. funker det funker det hva med og kompinere alle de goto til en? Lenke til kommentar
aklla Skrevet 14. september 2008 Del Skrevet 14. september 2008 (endret) hva med å drite i det evig lange scriptet ditt og bruke denne linjen? for /f "tokens=1* delims=0" %%a IN ("00022033044055066077088099011022033044") DO echo %%a%%b skal ikke være noe begrensning om hvor mange 0`er det kan være i starten. Endret 14. september 2008 av aklla Lenke til kommentar
petterg Skrevet 14. september 2008 Forfatter Del Skrevet 14. september 2008 hva med å drite i det evig lange scriptet ditt og bruke denne linjen? for /f "tokens=1* delims=0" %%a IN ("00022033044055066077088099011022033044") DO echo %%a%%b skal ikke være noe begrensning om hvor mange 0`er det kan være i starten. Det var nære... bare et siffer som faller ut - nullen i første 22033 Lenke til kommentar
aklla Skrevet 14. september 2008 Del Skrevet 14. september 2008 (endret) vet ikke åssen dette funker for deg, men hvis du setter 10 forran det tallet du skal ha så funker dette: regner med at du skal bytte ut tallene med en variabel eller noe, så da er det vel ikke noe problem. den første 10 SKAL alltid være der, ikke fjern det. for /f "tokens=1* delims=0" %%a IN ("10 0000100022033044055066077088099011022033044") DO echo %%b evt: for /f "tokens=1* delims=0" %%a IN ("10 %variabel%") DO echo %%b ikke optimalt å gjøre slikt, men det funker Endret 14. september 2008 av aklla Lenke til kommentar
petterg Skrevet 14. september 2008 Forfatter Del Skrevet 14. september 2008 vet ikke åssen dette funker for deg, men hvis du setter 10 forran det tallet du skal ha så funker dette:regner med at du skal bytte ut tallene med en variabel eller noe, så da er det vel ikke noe problem. den første 10 SKAL alltid være der, ikke fjern det. for /f "tokens=1* delims=0" %%a IN ("10 0000100022033044055066077088099011022033044") DO echo %%b evt: for /f "tokens=1* delims=0" %%a IN ("10 %variabel%") DO echo %%b ikke optimalt å gjøre slikt, men det funker Der har du det! (bare fjerne mellomrommet etter 10) Bat script har aldri vært optimalt på noe som helst vis Mange takk Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå