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

Printed on: February 12, 2025 at 03:02 o'clock

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
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
SlainteMhath
SlainteMhath Jun 20, 2016 at 11:44:14 (UTC)
Goto Top
Ja, das wars. Danke euch beiden face-smile