slaintemhath
Goto Top

Batch: SET geht nicht?!

Moin,

ich steh gerade auf dem Schlauch bei einer Batch (unter Windows 7)

Mein Code
for  /R logs\ %%a in (*.log) do (
  set t=%%a
  echo t: %t%
  echo a: %%a
)
ergibt
t:
a: c:\pfad\zum\log\file.log
erwarten würde ich
t: c:\pfad\zum\log\file.log
a: c:\pfad\zum\log\file.log

Was mach ich falsch?!
Kann mich wer in die richtige Richtung schubsen bitte?

lg,
Slainte

Content-ID: 307704

Url: https://administrator.de/forum/batch-set-geht-nicht-307704.html

Ausgedruckt am: 24.12.2024 um 20:12 Uhr

narthan
Lösung narthan 20.06.2016 aktualisiert um 13:30:54 Uhr
Goto Top
Hallo Slainte,

soweit ich mich recht erinnere, musst du die Variable mit Ausrufezeichen wiedergeben, wenn du den Wert, den du innerhalb der Schleife zugewiesen hast auch innerhalb der Schleife wieder ausgeben möchtest. Siehe z.B. verzögerte Variablenauflösung.

@bastla hat das z.B. sehr gut erklärt:
Link

Gruß,
narthan
129813
Lösung 129813 20.06.2016 aktualisiert um 13:53:24 Uhr
Goto Top
Hi.
You need delayed expansion if you set variables inside parentheses:
@echo off & setlocal enabledelayedexpansion
for  /R logs\ %%a in (*.log) do (
  set "t=%%a"  
  echo t: !t!
  echo a: %%a
)
Regards
SlainteMhath
SlainteMhath 20.06.2016 um 13:44:14 Uhr
Goto Top
Ja, das wars. Danke euch beiden face-smile