Gå til innhold

[Løst] bat-script: strippe null'er fra variabel


Anbefalte innlegg

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 av petterg
Lenke til kommentar
Videoannonse
Annonse

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

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 av aklla
Lenke til kommentar
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

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

Endret av aklla
Lenke til kommentar
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 :p

 

 

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...