Toon posts:

[Batch] Variabele variabel / Dynamische variabele

Pagina: 1
Acties:
  • 120 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoi, ik wil graag iets voor elkaar krijgen, waarvan ik eigenlijk denk dat het waarschijnlijk niet mogelijk zal zijn. Om het nog niet meteen op te geven, wil ik graag even als laatste poging hier het probleempje plaatsen. Hopelijk dat iemand weet hoe het kan, of kan bevestigen dat het niet mogelijk is.

Stel, definieer een lijstje van variabelen:
SET FOO_de=Jawol
SET FOO_en=Yes
SET FOO_nl=Jazeker
SET FOO_fr=Ah oui!


Daarna stel je een andere variabele in, waarmee je de taal selecteerd:
SET LANGUAGE=nl

Aan de hand van LANGUAGE bouw je een variabele op uit het lijstje:
ECHO %FOO_{%LANGUAGE%}%


Idd, dit klopt syntactisch niet helemaal. Ik heb verschillende combinaties geprobeerd, maar ik krijg het niet werkend. Helaas weet ik ook niet precies waar ik op zou moeten zoeken om zoiets dergelijks te kunnen vinden op internet. Variabele variabele?

Het is vergelijkbaar met wat wel in PHP mogelijk is.
http://www.php.net/language.variables.variable

Kan iemand me hier wat meer over vertellen? Het zou mooi zijn als het wel mogelijk is in Batch. Als het niet mogelijk is, geen probleem, dan ga ik voor een andere oplossing.

Verwijderd

Gaat je zonder 4nt (tikkie oud), Cygwin (tikkie overkill) of Windows PowerShell (tikkie beta) waarschijnlijk niet handig lukken.
Maar PHP, perl, Python, whatever scripts kun je probleemloos vanaf de commandline aanroepen, en dan worden de beperkingen van cmd.exe een stuk beter leefbaar... ;)

Verwijderd

Topicstarter
idd, ik zat ook te denken om het met PHP te gaan oplossen. Het huidige systeem bestaat uit een rommelige configuratie van Batch files. Toch zou het mooi zijn als het bij Batch zou kunnen blijven.

  • Nielson
  • Registratie: Juni 2001
  • Laatst online: 11:38
Kun j er niet gewoon omheen werken met aparte set secties met taal. Dus bijvoorbeeld zoiets :
code:
1
2
3
4
5
6
7
8
9
10
11
goto %language%

:nl
set foo1=Ja
set foo2=Nee
goto whatever

:de
set foo1=Jawohl
set foo2=Nein
goto whatever
Enz.

  • Microkid
  • Registratie: Augustus 2000
  • Laatst online: 11:28

Microkid

Frontpage Admin / Moderator PW/VA

Smile

Dit werkt al iets beter. Alleen moet je nu nog de variable kunnen gebruiken. Het is wel mogelijk, ik heb het ooit eens gedaan. Maar geen idee hoe.

code:
1
2
3
4
5
6
7
8
SET FOO_de=Jawol
SET FOO_en=Yes
SET FOO_nl=Jazeker
SET FOO_fr=Ah oui!

SET LANGUAGE=nl

ECHO FOO_%LANGUAGE%

4800Wp zonnestroom met Enphase
Life's a waste of time. Time's a waste of life. Get wasted all the time and you'll have the time of your life.


Verwijderd

Topicstarter
@Nielson, Ik ga kijken of ik hier wat mee kan, maar voor zo ver ik nu kan inschatten, gaat het op die manier niet werken. Maar daar moet ik nog eventjes wat mee gaan experimenteren om 't zeker te weten.

@ Microkid, het zou tof zijn als het op deze manier zou kunnen iig. Ik heb al een aantal dingen geprobeerd, maar het gaat nog niet werken helaas.

  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Je commandprompt met delayed expansion opstarten (
cmd /v
danwel via SETLOCAL dit enablen) en vervolgens dit gebruiken:

SETLOCAL ENABLEDELAYEDEXPANSION
SET FOO_de=Jawol
SET FOO_en=Yes
SET FOO_nl=Jazeker
SET FOO_fr=Ah oui!

SET LANGUAGE=nl

ECHO !FOO_%LANGUAGE%!


Een andere 'oplossing' is om dit te doen (dan heb je geen aparte command interpreter instelling nodig):
@ECHO OFF
SET FOO_de=Jawol
SET FOO_en=Yes
SET FOO_nl=Jazeker
SET FOO_fr=Ah oui!

SET LANGUAGE=nl

CALL :WriteLang FOO
echo returned

GOTO END

:WriteLang
@CALL ECHO %%%1_%LANGUAGE%%%

:END

  • whoami
  • Registratie: December 2000
  • Laatst online: 12-03 21:54
BATCH scripting hoort niet thuis in PRG, maar in Windows Clients
PRG -> WC

https://fgheysels.github.io/


Verwijderd

Topicstarter
@Whoami, sorry voor het plaatsen in het verkeerde forum.

@Elevator, Geweldig!, bedankt, dit gaat waarschijnlijk wel werken!
Pagina: 1