nahcir
Goto Top

Wert einer Variable an eine andere übergeben

Hallo,

ich übergebe über an die Variable %1 beim Aufrufen eines Skriptes einen Wert. Diesen kann ich auch absolut problemlos im Skript nutzen. Nun möchte ich aber einer anderen Variable den Wert von 1% zuweisen. Das bekomme ich einfach nicht hin. Folgendes funktioniert z.B. nicht:

set usr=%1

Wie sieht dafür die korrekte Syntax aus face-confused?

Danke!

EDIT:
Anscheinend klappt es doch so. Allerdings ist die Ausgabe über "echo" in meiner IF-Schleife nicht nachvollziehbar:

if [%1] == (
set /p usr=
) else (
set usr=%1
echo %usr%
)

"echo %usr%" gibt in diesem Falle nichts aus. "echo %1" gibt hingegen korrekt den entsprechenden Wert aus. Direkt NACH der Schleife gibt aber auch "echo %usr%" den richtigen Wert aus. Seltsam. Ich kann aber auch mit "echo %1" arbeiten.

Content-Key: 571767

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

Printed on: April 24, 2024 at 23:04 o'clock

Member: TK1987
TK1987 May 14, 2020 at 13:59:30 (UTC)
Goto Top
Moin,

Zitat von @nahcir:
"echo %usr%" gibt in diesem Falle nichts aus. [...] Seltsam.
Gar nicht seltsam. Befehle, die mit Klammern gruppiert werden gelten wie ein einziger Befehl.
Wenn du eine Variable innerhalb einer Gruppierung setzt; und diesen innerhalb der selben Gruppierung wieder aufrufst, musst du die Variable verzögern, sonst wird dir der Wert ausgegeben, den die Variable vor der Gruppierung hatte.

Falsch:
@echo off

(
  set test=Hallo Welt
  echo %test%
  )

Richtig:
@echo off
SetLocal EnableDelayedExpansion

(
  set test=Hallo Welt
  echo !test!
  )

Gruß Thomas