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-ID: 3219412193

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

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

TK1987
Lösung TK1987 30.06.2022 aktualisiert um 16:39:39 Uhr
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
Sisomyz
Sisomyz 30.06.2022 um 16:49:21 Uhr
Goto Top
Vielen Dank, das klappt wunderbar.