sisomyz
Goto Top

Stringvariable verketten

Hallo,
leider komme ich aktuell mit einem relativ einfachem Problem nicht weiter.
Ich benötige in einer Batchdatei die Möglichkeit den Dateinamen in einer Schleife zu ändern. Leider funktioniert das so nicht und ich finde nicht die richtige Syntax für die Verkettung.
@echo off
set obj.Name=Hoyerswerda
set obj.ID=07393
set obj[1].Name=Cottbus
set obj[1].ID=00880
set obj[2].Name=Bischdorf
set obj[2].ID=00504
set obj[3].Name=Leipzig_Halle
set obj[3].ID=02932
set obj[4].Name=Kubschuetz
set obj[4].ID=00314


set "Dat1=tageswerte_RR_"  
set "Dat2=_akt.zip"  

FOR /L %%i IN (0 1 2) DO  (
set y=%Dat1%%%obj[%%i].ID%%%Dat2% 
call echo %%y%%
call echo %Dat1%%%obj[%%i].ID%%%Dat2% 
pause
)
Kann mir hier jemand von euch weiterhelfen?

Content-Key: 3219412193

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

Printed on: June 18, 2024 at 12:06 o'clock

Member: TK1987
Solution TK1987 Jun 30, 2022 updated at 14:39:39 (UTC)
Goto Top
Moin,

für Variable in Variable benötigst du die Variablenverzögerung.
@echo off
setlocal EnableDelayedExpansion

set obj.Name=Hoyerswerda
set obj.ID=07393
set obj[1].Name=Cottbus
set obj[1].ID=00880
set obj[2].Name=Bischdorf
set obj[2].ID=00504
set obj[3].Name=Leipzig_Halle
set obj[3].ID=02932
set obj[4].Name=Kubschuetz
set obj[4].ID=00314

set "Dat1=tageswerte_RR_"  
set "Dat2=_akt.zip"  

for /L %%I in (0 1 2) do call :Verketten "%Dat1%!obj[%%I].ID!%Dat2%"  
pause
goto :EoF

:Verketten
echo %~1

Oder einfach mit Powershell arbeiten:
$obj = @(
  @{Name = "Hoyerswerda"   ; ID = "07393"}  
  @{Name = "Cottbus"       ; ID = "00880"}  
  @{Name = "Bischdorf"     ; ID = "00504"}  
  @{Name = "Leipzig_Halle" ; ID = "02932"}  
  @{Name = "Kubschuetz"    ; ID = "00314"}  
)

$Prefix = "tageswerte_RR_"  
$Suffix = "_akt.zip"  

0..2 | Foreach {
  $Prefix + $Obj[$_].ID + $Suffix
}

Gruß Thomas
Member: Sisomyz
Sisomyz Jun 30, 2022 at 14:49:21 (UTC)
Goto Top
Vielen Dank, das klappt wunderbar.