Gå til innhold

.bat fil til å hente tegn fra variabel plass i en streng?


Anbefalte innlegg

Jeg lager et Windows XP bat script (ja, det må være en .bat fil), og vil gjerne hente ut en bokstav fra en streng bassert på en variablel.

 

Variabelen er et tall mellom 0 og 2, og refferer til en posisjon i strengen. Måten jeg bruker for å hente ut f.eks tegn nr 2 er:

set TEGN=%STRENG:~1,1%

Tallet jeg vil ha til å variere er det første 1 tallet i den kommandoen.

Er det noen som har en glup løsning?

Lenke til kommentar
Videoannonse
Annonse

Hvis det ikke *må* være en .bat-fil kan du jo laste ned cygwin. Da får du med mange standard unix-tools + et bash-shell og da kan du skrive:

 

#!/bin/bash
VAR=2
TEGN=`echo "strengen min" | cut -c $VAR`

eller noe liknende. Uansett verdt å laste ned cygwin, ca tusen ganger bedre enn windows .bat-scripting.

Lenke til kommentar

Jeg vet, hadde bare Windows kommandolinja vært like kraftig som Linux sin. :hm: . Men dette skal kunne kjøres på helt reine XP maskiner, så jeg kan desverre ikke bruke cygwin.

Det er ikke helkrise om det ikke er mulig å få det til, for da bare lager jeg en seksjon i skriptet for hver mulighet, så hopper dit hvor den henter ut riktig i henhold til hva som er i variabelen.

Tenkte bare det ville bli så mye penere om alt ble ordna på en liten kodesnutt.

Lenke til kommentar

Noe slik?

@echo off

rem Enable delayed expansion
setlocal ENABLEDELAYEDEXPANSION

set string=123456789
set index=4
set length=3

SET substring=!string:~%index%,%length%!

echo String is: !string!
echo substring is: !substring!

 

Bruker "Delayed environment variable expansion" - da vil cmd.exe vente med å interpolere variabler helt til

de skal benyttes - ikke kun en gang idet script leses. En bruker ! istedenfor % for å angi at variabel

skal benytte "delayed expansion".

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...