# [Batch] For %%a in... %%a an variable übergeben



## Hyper Lord (27. Mai 2012)

Hallo, ich habe folgendes Problem,
Ich möchte eine Text-Datei mit einer Schleife durchlaufen lassen,
in dieser txt befinden sich Dateinamen und wenn ein neues verzeichniss kommt
ein Verzeichnispfad:
\test\test2\test3
hallo.php
Welt.txt
\testa\testb
neueDatei.jpg
use...
wenn ich nun in der schleife auf einen Pfad stosse :

```
set "HauptPfad=C:\test\test"
For /f %%a in (c:\txt.txt) do (
set "NewVariable=%%a"
If "%NewVariable%:~0,1" == "\" (
set "NeuPfad=%HauptPfad%;%NewVariable%"
pushd"%NeuPfad"
) else (
echo "del %%a"
)
pause
)
cmd
```
funktioniert das irgendwie nicht, else kann er nicht erkennen und den 
NeuPfad ist leer bzw. wird nicht erkannt, ich habe gegooglet aber irgendwie nichts gefunden, vielleicht habe ich auch nicht genügend Fachkentnis um nach den richtigen begriffen zu googlen.
ich müsste wissen wie ich  %%a in einer neuen variable speicher, ich galube dann kann ich auch das erste zeichen der neuen Variable auslesen.die Variablen Namen sind nur in dem BSP so in dem Skript sind sie anderst benannt, habe das nur zur besseren Übersicht so benannt
Kann mir bitte jemand helfen
vielen Dank im vorraus


----------



## deepthroat (28. Mai 2012)

Hi.

Du müßtest die verzögerte Variablenexpansion nutzen.

Siehe z.B. http://www.robvanderwoude.com/variableexpansion.php

Gruß


----------



## Hyper Lord (28. Mai 2012)

super vielen dank für die Hilfe, klappt wunderbar, ich habe  zwar  nicht ganz genau verstanden, was er da alles erklärt, da mein englisch nicht das beste ist aber das was ich brauchte hat funktioniert, und nun geht auch der rest wie geschmiert, bis auf die If abgfrage,
ich frage nach dem ersten Zeichen, wenn das  ein \ tu was, ansonsten was anderes, kann es sein das batch kein else erkennt, er sagt mir dann immer else befehl kann nicht gefunden werden?

Noch ein kleines Problem, wenn ich nun mit pushd "!pfadneu!" den neuen Pfad setzen will findet er das Verzeichnis nicht, als 

```
set "pathstandart=C:\test"
set "pfadneu=!pathstandart!%%a"
pushd "!pfadneu!"
```
da bringt er mir den Fehler verzeichnis nicht gefunden


----------



## deepthroat (29. Mai 2012)

HyperLord hat gesagt.:


> die If abgfrage,
> ich frage nach dem ersten Zeichen, wenn das  ein \ tu was, ansonsten was anderes, kann es sein das batch kein else erkennt, er sagt mir dann immer else befehl kann nicht gefunden werden?


Wie sieht dein Code jetzt genau aus?

Und wie genau lautet die Fehlermeldung? (Kopieren und hier einfügen!)


HyperLord hat gesagt.:


> Noch ein kleines Problem, wenn ich nun mit pushd "!pfadneu!" den neuen Pfad setzen will findet er das Verzeichnis nicht, als
> 
> ```
> set "pathstandart=C:\test"
> ...


Wie genau ist denn der Wert von pfadneu?

Und Standard schreibt man mit d.

Gruß


----------

