
43547
18.02.2007, aktualisiert am 26.02.2007
Problem beim Verarbeiten mehrerer Pfade innerhalb einer for-Schleife
Hier Nitschke, wieder Mal ein (hoffentlich) kleines Problem. Ich habe Bastler's Lösung in mein vorhandenen Batch-Script eingebaut. Dieser sieht wie folgt aus:
:CREATE_BACKUP1
IF EXIST %LW_WINDIR%%LW_AAC_SYS%LW_C.drv FOR /f "delims== tokens=1-2" %%i in (%LW_WINDIR%%LW_AAC_SYS%LW_C.drv) do CALL :CREATE_BACKUP1_2 "%%i" "%%j"
GOTO CREATE_BACKUP2
:CREATE_BACKUP1_2
SET LW_TMP=%~1
SET PATH_TMP=%~2
COPY C:\HALLO\xyz.key %PATH_TMP%\System\Keys\xyz.key
Inhalt der LW_C.drv - Datei:
LW101=C:\Test-Ordner\Hallo\
LW102=D:\NocheinOrdner\Hier\
LW103=E:\NixDrin\
usw. usf.
Also folgendes passiert bzw. soll passieren. Je nachdem wieviele Pfade innerhalb der LW_C.drv - Datei gefunden werden, sollen diese eingelesen und weiter verarbeitet (z.B. COPY) werden. Das heißt bei jedem Durchlauf soll per COPY die xyz.key nach %PATH_TMP% kopiert werden. %PATH_TMP% stellt jeweils einen Pfade aus der LW_C.drv - Datei dar. Das Problem ist, dass der COPY Befehl nur beim letzten Pfad aus der LW_C.drv zur Ausführung kommt. Wenn also in der Datei 10 verschieden Pfade zu finden sind, wird der COPY Befehl nur auf den letzten Pfad angewendet, ABER bei jedem Pfad aus der LW_C.drv sollte der COPY Befehl ausgeführt werden.
Wie kann man das Problem lösen?
MfG
Marcel
:CREATE_BACKUP1
IF EXIST %LW_WINDIR%%LW_AAC_SYS%LW_C.drv FOR /f "delims== tokens=1-2" %%i in (%LW_WINDIR%%LW_AAC_SYS%LW_C.drv) do CALL :CREATE_BACKUP1_2 "%%i" "%%j"
GOTO CREATE_BACKUP2
:CREATE_BACKUP1_2
SET LW_TMP=%~1
SET PATH_TMP=%~2
COPY C:\HALLO\xyz.key %PATH_TMP%\System\Keys\xyz.key
Inhalt der LW_C.drv - Datei:
LW101=C:\Test-Ordner\Hallo\
LW102=D:\NocheinOrdner\Hier\
LW103=E:\NixDrin\
usw. usf.
Also folgendes passiert bzw. soll passieren. Je nachdem wieviele Pfade innerhalb der LW_C.drv - Datei gefunden werden, sollen diese eingelesen und weiter verarbeitet (z.B. COPY) werden. Das heißt bei jedem Durchlauf soll per COPY die xyz.key nach %PATH_TMP% kopiert werden. %PATH_TMP% stellt jeweils einen Pfade aus der LW_C.drv - Datei dar. Das Problem ist, dass der COPY Befehl nur beim letzten Pfad aus der LW_C.drv zur Ausführung kommt. Wenn also in der Datei 10 verschieden Pfade zu finden sind, wird der COPY Befehl nur auf den letzten Pfad angewendet, ABER bei jedem Pfad aus der LW_C.drv sollte der COPY Befehl ausgeführt werden.
Wie kann man das Problem lösen?
MfG
Marcel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 52016
Url: https://administrator.de/forum/problem-beim-verarbeiten-mehrerer-pfade-innerhalb-einer-for-schleife-52016.html
Ausgedruckt am: 08.04.2025 um 22:04 Uhr
6 Kommentare
Neuester Kommentar
G' Abend,
also ich gehe einfach mal davon aus, dass die PFade in der Datei untereinander stehen. Somit habe ich folgendes konstruiert:
Version 0.2
Das Ganze ist gerade nur Theorie! Ich hoffe, ich interpretiere deine Anforderungen richtig.
ICh habe das GOTO BACKUP2 durch das else ersetzt. Da ich nicht weiß, wie die ganze Datei aussieht.
Grüße
Dani
also ich gehe einfach mal davon aus, dass die PFade in der Datei untereinander stehen. Somit habe ich folgendes konstruiert:
Version 0.2
@echo off
IF EXIST "C:\LW_C.drv" (
FOR /f "delims== tokens=2" %%i in (C:\LW_C.drv) do (
COPY C:\HALLO\xyz.key %%~i\System\Keys\xyz.key
.....
.....
)
) else (
BACKUP2
)
ICh habe das GOTO BACKUP2 durch das else ersetzt. Da ich nicht weiß, wie die ganze Datei aussieht.
Grüße
Dani
hi,
Wie Dani auch schon machte habe ich das Goto Error ersetzte gegen eine Else *g
sollte so funktionieren :
Wie Dani auch schon machte habe ich das Goto Error ersetzte gegen eine Else *g
sollte so funktionieren :
@Echo off
:CREATE_BACKUP1
IF EXIST test.drv (
FOR /f "delims== tokens=1-2" %%i in (test.drv) do Set LW_TMP=%%~i && SET PATH_TMP=%%~j && CALL :CREATE_BACKUP1_2
)Else (
Echo Error
)
:CREATE_BACKUP1_2
COPY C:\HALLO\xyz.key %PATH_TMP%\System\Keys\xyz.key