marinux
Goto Top

ein vbs array mit batch abfragen

Hallo,

ich möchte ein Array in vbs erzeugen:
(1,2,3,...,54)

also Zahlen von 1-54.

Aus diesem Array möchte ich dann per Batch bestimmte Werte abfragen. Wie mache ich das?

Content-Key: 84731

Url: https://administrator.de/contentid/84731

Printed on: April 26, 2024 at 04:04 o'clock

Member: bastla
bastla Apr 04, 2008 at 17:23:06 (UTC)
Goto Top
Hallo marinux!

... Wie mache ich das?
Gar nicht - ein VBS-Array existiert nur zur Laufzeit des VBScripts und dann nur im Arbeitsspeicher.

Was hast Du denn damit vor?

Grüße
bastla
Member: marinux
marinux Apr 04, 2008 at 17:38:47 (UTC)
Goto Top
ja wäre doch in Ordnung. Ich habe eine vbs Datei, die von der Batch aufgerufen wird. Die vbs erzeugt das array und ich will mir dann per Befehl einen bestimmten Wert aus dem Array holen. Ich kenne arrays nur von php, da holt man sich ja einen wert z.b. so: array ist der erste Wert usw. So will ich das auch haben, halt nur mit einer Batch. nur die frage, was ins vbs muss und mit welchem Befehl ich die vbs datei in de rbatch aufrufen muss.
Member: bastla
bastla Apr 04, 2008 at 17:49:14 (UTC)
Goto Top
Hallo marinux!

Das Array müsste durch das selbe VBScript, das es erzeugt hat, auch ausgelesen werden - per Batch könntest Du allenfalls bereits beim Aufruf des Scripts einen Index übergeben - wenn der allerdings schon bekannt ist, und das Script auch den zugehörigen Arrayeintrag ja kennen musste, um das Array zu erstellen, wozu bräuchtest Du dann die anderen 53 Werte?

Mir ist weiterhin unklar, was Du überhaupt damit erreichen willst - also hole mit Deiner Problembeschreibung bitte ein wenig weiter aus ...

Grüße
bastla
Member: marinux
marinux Apr 04, 2008 at 19:33:37 (UTC)
Goto Top
ok, ich habe folgendes problem. und zwar muss ich mir für ein script eine bestimmte anzahl an vergangenen kalenderwochen zurückgegeben lassen. z.b. haben wir jetzt kw 14 und es sollen die vorangegangenen 3 wochen noch ausgewertet werden, dann sind das kw 14,13,12,11. nun haben wir u.a. bei kw1 das problem, dass ja kw 1,54,53,52 zurückgegeben werden müssen. Das wollte ich halt über das array lösen. oder kann ich das auch anderst lösen. z.b. nur in batch?
Member: bastla
bastla Apr 04, 2008 at 19:45:12 (UTC)
Goto Top
Hallo marinux!

Ist das etwa so gemeint?
@echo off & setlocal
set /a "KW=1"  

for /L %%i in (0,1,3) do call :ProcessWeek %%i
goto :eof

:ProcessWeek
set /a W=%KW%-%1
if %W% leq 0 set /a W+=54
echo Bearbeite Woche %W%

::
:: weiterer Batchcode
::

goto :eof

Grüße
bastla
Member: marinux
marinux Apr 04, 2008 at 20:21:03 (UTC)
Goto Top
ok, vom prinzip her sieht das gut aus. nur ruft er bei mir die forschleife nicht 3 mal auf. wenn ich das script laufen lasse gibt er mir lediglich aus: Bearbeite Woche 1
Nicht aber 54 und 53.
Member: bastla
bastla Apr 04, 2008 at 20:28:30 (UTC)
Goto Top
Hallo marinux!

Kann ich nicht nachvollziehen - ich habe eben nochmals den vorhin geposteten Code in eine Datei "LetzteWochen.bat" kopiert und getestet - Ergebnis:
D:\>LetzteWochen.bat
Bearbeite Woche 1
Bearbeite Woche 54
Bearbeite Woche 53
Bearbeite Woche 52

Grüße
bastla
Member: marinux
marinux Apr 05, 2008 at 08:12:45 (UTC)
Goto Top
Ok, es funktioniert, hatte einen kleine Fehler gemacht face-wink

Aber noch eine kleine Frage, warum hast du in der forschleife 0,1,3 stehen? Also besser gefragt warum müssen 0 und 1 extra angegeben werden?
Member: bastla
bastla Apr 05, 2008 at 08:49:39 (UTC)
Goto Top
Hallo marinux!

... warum hast du in der forschleife 0,1,3 stehen?
Einfach einmal "for /?" eingeben und auf der zweiten Seite den Teil zum Schalter "/L" lesen ...

Was zwar auch funktionieren würde, ist
for %%i in (0 1 2 3) do ...
aber die von mir eingesetzte Variante mit Zählschleife ist flexibler und könnte zB auch so aussehen:
set Anzahl=3
for /L %%i in (0,1,%Anzahl%) do ...

Grüße
bastla
Member: marinux
marinux Apr 06, 2008 at 10:37:11 (UTC)
Goto Top
Alles klar. Vielen Dank. Hast mir sehr geholfen.