[Win Shell Script/BATCH] Variabelen

Pagina: 1
Acties:

  • bouvrie
  • Registratie: Augustus 2002
  • Laatst online: 21-05-2025

bouvrie

Interior demolisher

Topicstarter
Ik heb een Windows Shell Script gemaakt, waarin ik dynamisch een tiental variabelen aanmaak:
code:
1
  for %%i in (1 2 3 4 5 6 7 8 9 10) do SET var%%i=Blaat

Nu wil ik vervolgens graag elke variabele (var1 var2 var3 ... var10) uitbreiden door er tekst achter te plakken. Ik wil dus iets dergelijks als:
code:
1
2
  for %%i in (1 2 3 4 5 6 7 8 9 10) do SET var%%i=Blaat
  for %%i in (1 2 3 4 5 6 7 8 9 10) do SET var%%i=var%%i [Toegevoegde Tekst]

Aangezien variabelen vanuit de shell via %var1% %var2%, enz benaderd moeten worden, zou ik dus uiteindelijk de volgende code krijgen:
code:
1
2
  for %%i in (1 2 3 4 5 6 7 8 9 10) do SET var%%i=Blaat
  for %%i in (1 2 3 4 5 6 7 8 9 10) do SET var%%i=%var%%i% [Toegevoegde Tekst]

Windows beschouwt %var%%i% echter als (%var%)(%i%) en niet als de gewenste
%var(%i%)%. Heeft iemand enig idee of geneste variabelen als deze mogelijk zijn met Windows Shell Scripting? Of is er misschien iemand die weet hoe je prioriteit kan geven aan de expansie van variabelen (in dit geval de %i%)?

01010100011010000110010100100000010011110100111001000101001000000011101000101001


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 01-05 10:06

curry684

left part of the evil twins

OS-specific shell scripts aub in het OS-specific forum :)

* curry684 trapt naar Windows Operating Systems

Professionele website nodig?


  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Ben net even wezen spelen met dat FOR commando, en als ik bijvoorbeeld doe:
code:
1
for %%i in (1 2) do echo %path%

dat ik dit zie op de comandline:
code:
1
2
C:\>for %i in (1 2) do echo C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\W
bem;C:\Program Files\Executive Software\Diskeeper\

Dat houd dus in, dat je niet dynamisch variable kan uitlezen.

De enige variable die je kan gebruiken, maak je dus in je FOR aan, in dit geval: %%i

Ik denk dat je enige mogenlijkheid is om te gaan zoeken richting VBscript.

Ey!! Macarena \o/


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Ik denk dat delayed expansion van environment variables doet wat jij wil - kijk eens in de help van het 'SET' commando daar na :)

  • bouvrie
  • Registratie: Augustus 2002
  • Laatst online: 21-05-2025

bouvrie

Interior demolisher

Topicstarter
elevator schreef op 10 oktober 2004 @ 09:38:
Ik denk dat delayed expansion van environment variables doet wat jij wil - kijk eens in de help van het 'SET' commando daar na :)
Hmmm ik dacht dat Delayed Expansion standaard al aan stond, maar ik was in de war met Command Extension. 8)7

Hoe dan ook, het is gelukt, door SETLOCAL ENABLEDELAYEDEXPANSION aan het begin van het script te plaatsen, waardoor de delayed expansion aangezet wordt. Bedankt! :)

01010100011010000110010100100000010011110100111001000101001000000011101000101001


Verwijderd

setlocal
code
pushd

is toch genoeg?

  • bouvrie
  • Registratie: Augustus 2002
  • Laatst online: 21-05-2025

bouvrie

Interior demolisher

Topicstarter
Verwijderd schreef op 11 oktober 2004 @ 10:33:
setlocal
code
pushd

is toch genoeg?
Pushd? Waarom zou ik iets met een map willen doen? :?
PUSHD stores the current directory for use by the POPD command, then
changes to the specified directory.

01010100011010000110010100100000010011110100111001000101001000000011101000101001

Pagina: 1