pbelcl
Goto Top

Inhalte von FOR in Variable geht nicht !?

Hallo Ihr Lieben,

Ich habe eine Liste wo Dateien kopiert werden sollen, die so aufgebaut ist:

; Source-Pfad\, ,Zielpfad\, ,Dateiname oder *.* wenn ALLE!
Beispiel:
Software\Video und Audio\VLC Video Lan Client\, ,Software\Video und Audio\VLC Video Lan Client\, ,*.*

Mein Batch funktioneirt grundsätzlich gut!
Nun will ich noch der Einfachheit halber abprüfen ob in der 3 Spalte (Variable %%k) was drinnen steht.
Wenn nicht würde ich genre ausl Zielpfad den Inhalt aus Spalte 1 (%%i) verwenden.

Leider wird mir mit dem Code

For /F "eol=; delims=, tokens=1-6" %%i in (%liste%) do (  
	if %%k==x set "Z_V=%%k"  
	if not %%k==x set "Z_V=%%i"  

die Variable %Z_V% nicht befüllt, sie ist immer leer!!

Habt ihr einen Tipp ?
Oder einen Vorschlag, wie ich das einfacher lösen kann ?

Content-ID: 262843

Url: https://administrator.de/forum/inhalte-von-for-in-variable-geht-nicht-262843.html

Ausgedruckt am: 23.12.2024 um 07:12 Uhr

114757
114757 09.02.2015 aktualisiert um 12:29:52 Uhr
Goto Top
die Variable %Z_V% nicht befüllt, sie ist immer leer!!
Stichwort Delayed Expansion
Exkurs (verzögerte) Variablenerweiterung

Gruß jodel32
pbelcl
pbelcl 09.02.2015 um 19:44:59 Uhr
Goto Top
Danke Jodel32, dann werde ich das wohl mit einem Call auf eine Unterbatch lösen müssen!
114757
114757 09.02.2015 aktualisiert um 20:37:35 Uhr
Goto Top
Zitat von @pbelcl:

Danke Jodel32, dann werde ich das wohl mit einem Call auf eine Unterbatch lösen müssen!
Wieso ? Nö ...
@echo Off & setlocal enabledelayedexpansion
For /F "eol=; tokens=1-6 delims=," %%a in (%liste%) do (  
	if "%%c"=="" (set "Z_V=%%a") else (set "Z_V=%%c")  
        echo !Z_V!
)
pbelcl
pbelcl 09.02.2015 um 20:56:43 Uhr
Goto Top
Nun ja, diese Lösung hat sich für mich aus der Doku nicht erschlossen face-wink
Muss mich in diesem Fall was Schleifen betrifft auch eher als Anfänger outen .....

Danke vorerst mal, werd mich in den nächsten Tagen mit deinem Vorschlag bschäftigen, mal sehen was ich daraus umsetzen und auch verstehen kann.
Heute gehts jedenfalls nicht mehr face-wink
pbelcl
pbelcl 24.02.2015 um 10:43:36 Uhr
Goto Top
Hi Jodel32,

Danke für deinen Tipp. Sorry für die lange Wartezeit, aber ich habe leider nicht sehr viel Ruhe und kann mich daher nur selten um meine Batchdateien kümmern.
Heute wars wieder soweit face-wink

Hab deinen Vorschlag eingebaut und leider kein Ergebnis damit erzielt ;-(
Genauer habe ich folgenden Code:

@echo off & chcp 1252
setlocal enabledelayedexpansion 

set "Z_LW=d:" 
set "Q_LW=p:"

For /F "eol=; tokens=1-6 delims=," %%i in (%Z_LW%\!FileCopy.txt) do ( 
	if "%%k"=="" (set "Z_V=%%i") else (set "Z_V=%%k") 
	echo I:%%i
	echo J:%%j
	echo K:%%k
	echo L:%%l
	echo M:%%m
	echo ZV==%Z_V%
)
pause



Es werden zwar wunderbar die Inhalte vom %%i - %%m in der Liste angezeigt, aber die Variable %Z_V% bleibt leider leer ;-(
Habe ich was falsch gemacht??
114757
Lösung 114757 24.02.2015 aktualisiert um 11:27:12 Uhr
Goto Top
Zitat von @pbelcl:
Habe ich was falsch gemacht??
Ja, du hast keine Anführungszeichen anstatt Prozentzeichen um die Variable gesetzt !!!
echo !Z_V!
Les doch bitte das obig verlinkte Tutorial zu delayed expansion !

Gruß jodel32
pbelcl
pbelcl 24.02.2015 aktualisiert um 11:36:40 Uhr
Goto Top
Sorry DAS hatte ich gelesen, aber noch nicht richig verstanden!
Sieht jetzt gut aus, werde es mal in der Praxis ausprobieren und mich dann nochmal melden!
114757
114757 24.02.2015 aktualisiert um 12:40:23 Uhr
Goto Top
Zitat von @pbelcl:
Sorry DAS hatte ich gelesen, aber noch nicht richig verstanden!
och mönsch Google kaputt ? http://ss64.com/nt/delayedexpansion.html
pbelcl
pbelcl 24.02.2015 um 12:46:08 Uhr
Goto Top
Nicht so streng mit den Anfängern..
Ich arbeite noch einige Ebenen unter euch face-wink

Habs übrigens gerade mit deiner Hilfe gelöst, DANKE!!