# [Batch] Delayed Extension



## chrysler (20. August 2006)

Hallo.
Ich versuche mich am batch-sricpting; im Moment komme ich an wenigen Stellen nicht weiter.


```
set /P patha=&ltC:\Patch\patha.txt
```
Was heißt &lt ? Die cmd will einen Pfad als Input, ansonsten Fehler.



```
set delimiter=-
set filename=%cd%
for %%i in (*) do if not "%%i"=="%~nx0" echo.%filename%%delimiter%%%~i
```
Wie soll ich das %%~i verstehen?




> Wo ist das Problem? Einfach mit ".." eine Stufe höher gehen, den Pfad expandieren und dann ein Replace. Das Replace kann leider unsauber werden, deshalb muss man die Variable mit etwas anderem als '%' expandieren - nämlich '!'. Dazu natürlich Delayed Expansion anschalten.




```
set y=%x%\..
for /f "delims=" %%i in ("%x%") do set z=%%~i
set last=%x:!z!=%
```

Was ist die Delayed Expansion und was bedeutet noch der Code, der dazugehört:



```
set repl=%x:^^=^^^^%
set repl=%repl:^&=^^^&%
set repl=%repl:^!=^^^!%
set repl=%repl:^%=^^^%%
```


----------

