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 ?
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.
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 ?
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.
Please also mark the comments that contributed to the solution of the article
Content-Key: 571767
Url: https://administrator.de/contentid/571767
Printed on: May 4, 2024 at 10:05 o'clock
1 Comment
Moin,
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:
Richtig:
Gruß Thomas
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