[Batch] Laatste getal in een string.

Pagina: 1
Acties:

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Ik heb een string als "bladiebla.400"

Met
Batchfile:
1
for /f "tokens=2 delims=." %%c in ("%vol%") do set sequence=%%c
kan ik hier het nummer 400 uithalen. Bovenstaande code geeft echter de 2e string. Als ik dus bla.die.bla.400 heb, heb ik een probleem, want dan krijg ik niet 400 terug, maar "die".

Hoe kan ik het laatste voorkomen van iets opvragen (in dit geval dus hetgeen wat àchter de laatste punt staat)?

En hoe kan ik dan in een andere string de rest zetten?

Dus eigenlijk wil ik dit:

code:
1
2
3
4
5
6
7
8
blabla.40
wordt: blabla & 40

bla.bla.40
wordt: bla.bla & 40

bla.die.bla.die.bla.1337
wordt: bla.die.bla.die.bla & 1337


Ik heb al verschillende for's geprobeerd, maar ik denk dat ik sowieso iets moet hebben wat het juist andersom doet (dat met token=... begint vooraan te tellen, ik moet eigenlijk achteraan kunnen beginnen met tellen).

In PHP zou ik het zo doen:
PHP:
1
2
3
4
5
<?php
$x = 'bla.die.bla.30';
echo substr($x, strrpos($x, '.')+1); // Het nummer aan het einde
echo substr($x, 0, strrpos($x, '.')); // De rest
?>

Maar volgens mij is er niet zoiets in batch.

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • markvt
  • Registratie: Maart 2001
  • Laatst online: 12:02

markvt

Peppi Cola

kan je niet zoeken op . en dan zolang er een punt gevonden is het eerste stuk eraf knippen tot er geen punt meer is ?

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Je kan net doen of die . een extensie is en het parsen aan de command interpreter over laten:

for /f "tokens=*" %%a in ("dsajsjhsdadjsa.dadas.200") do set tmp=%%~xa
for /f "tokens=* delims=." %%a in ("%tmp%") do set sequence=%%a
echo %sequence%


Je kan ook parseren op letters zonder cijfers:

for /f "tokens=1 delims=abcdefghijklmnopqrustivwxyzABCDEFGHIJKLMNOPQRUSTIVWXYZ." %%a in ("blahdieblah.dd.d.dd..500") do set sequence=%%a
echo %sequence%

:)

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 05-03 17:14
left$ en mid$ functies :)?

~ Mijn prog blog!


  • Tanuki
  • Registratie: Januari 2005
  • Niet online
elevator schreef op zondag 03 december 2006 @ 15:26:
Je kan net doen of die . een extensie is en het parsen aan de command interpreter over laten:

for /f "tokens=*" %%a in ("dsajsjhsdadjsa.dadas.200") do set tmp=%%~xa
for /f "tokens=* delims=." %%a in ("%tmp%") do set sequence=%%a
echo %sequence%


Je kan ook parseren op letters zonder cijfers:

for /f "tokens=1 delims=abcdefghijklmnopqrustivwxyzABCDEFGHIJKLMNOPQRUSTIVWXYZ." %%a in ("blahdieblah.dd.d.dd..500") do set sequence=%%a
echo %sequence%

:)
Dan is die eerste oplossing nog het mooist. Ik kan bij de tweede namelijk niet "tekst.13.37" gebruiken.

Nee, die eerste doet precies wat ik wil. :) Misschien niet zo netjes, met dat sterretje, maar ach... Als er een betere oplossing is hoor ik het graag. :D

Bedankt!


EDIT: Oh, shit, hij maakt er ".37" van, niet "37". :(
EDIT 2: Oeps, die 2e for haalt die punt natuurlijk weer weg. Maar hoe kan ik nou de rest terugkrijgen zeg maar?

[ Voor 8% gewijzigd door Tanuki op 03-12-2006 18:28 ]

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

Waar hoort mijn topic? Batch hoort in Windows Clients. :)

PRG>>WOS

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

l0c4lh0st schreef op zondag 03 december 2006 @ 18:19:
EDIT 2: Oeps, die 2e for haalt die punt natuurlijk weer weg. Maar hoe kan ik nou de rest terugkrijgen zeg maar?
Volgens mij doet %~na dat - zie
for /?
for alle mogelijke modifiers :)
Pagina: 1