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-Key: 307704

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

Printed on: April 19, 2024 at 19:04 o'clock

Member: narthan
Solution narthan Jun 20, 2016 updated at 11:30:54 (UTC)
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
Mitglied: 129813
Solution 129813 Jun 20, 2016 updated at 11:53:24 (UTC)
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
Member: SlainteMhath
SlainteMhath Jun 20, 2016 at 11:44:14 (UTC)
Goto Top
Ja, das wars. Danke euch beiden face-smile