towi62
Goto Top

Längere For Schleife will nicht laufen

Hallo, ich habe eine Batch für die Einbindung mehrerer Laufwerke geschrieben.
Nur in der FOR Schleife will sie nicht funktionieren.
Die kleine Schleife ist o.k., die große bricht nach dem ersten Laufwerk ab.

@echo off
setlocal enabledelayedexpansion
echo "" > %~dp0\Laufwerksinit.txt

SET LW=X
SET "var=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"

for %%a in (%var%) do (
SET LW=%%a
echo !LW!
)

timeout /t 10 /nobreak

for %%a in (%var%) do (
SET LW=%%a

REM Laufwerksaufruf und Initialisierung

SET i=6

echo Laufwerksaufruf und Initialisierung für Laufwerk: !LW! / sec_!LW!

IF NOT EXIST sec_!LW!\nul goto LWW
echo LW !LW! soll installiert werden

IF EXIST !LW!:\nul goto LWN
echo LW !LW! existiert noch nicht

start sec_!LW!\Prog\TrueCrypt.exe /l!LW! /v sec_!LW!\Data\My_own_mobile /q /b /w
Pause

IF EXIST !LW!:\nul goto LWE
SET Ausg="LW !LW! wurde nicht installiert"
goto LWZ

:LWE
SET Ausg="LW !LW! erfolgreich instaliert"
REM Start / wait
Call !LW!:\start.bat
goto LWZ

:LWN
SET Ausg="LW !LW! bereits vorhanden"
goto LWZ

:LWW
SET Ausg="LW sec_!LW! keine Datei"
SET i=0

:LWZ
cls
echo Laufwerksaufruf und Initialisierung für Laufwerk: !LW! / sec_!LW!
echo ----------------------------------------------------
echo %Ausg%
echo %Ausg% >> %~dp0\Laufwerksinit.txt
echo ++++++++++++++++++++++++++++++++++++++++++++++++++++
echo ENDE --- Laufwerksaufruf und Initialisierung für Laufwerk: !LW! / sec_!LW! --- ENDE
timeout /t %i% /nobreak

REM Laufwerksaufruf und Initialisierung Ende

)
pause
exit

Für Hinweise, was hier nicht exakt ist, bion ich dankbar.
Freundliche Grüße aus Potsdam
Torsten Wichert

Content-ID: 1157964155

Url: https://administrator.de/contentid/1157964155

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

149062
Lösung 149062 15.08.2021 aktualisiert um 11:31:27 Uhr
Goto Top
Sprungmarken innerhalb von For-Schleifen sind ungültig, weil alles was innerhalb der Klammern steht quasi für die CMD eine einzige Zeile ist
Batchprogrammierung GOTO-Sprungmarken innerhalb einer Schleife.
Wenn mit Sprungmarken dann mit call Subprozedur-Aufruf welche dann außerhalb des FOR-Loops platziert ist.

for %%a in (%var%) do (
    call :myprocedure %%a
)
goto :eof

:myprocedure
echo %1
exit /b
https://www.tutorialspoint.com/batch_script/batch_script_functions_with_ ...
towi62
towi62 15.08.2021 um 19:41:24 Uhr
Goto Top
Hallo und vielen Dank für die schnelle Reaktion.
Das funktioniert Hervorragend!!!

(Und ich habe eine ganzen Tag dran gesessen).

Damit ist es gelöst und alles funktioniert.

Torsten
149062
149062 15.08.2021 um 20:32:58 Uhr
Goto Top
Na dann ab auf die 🏝️
towi62
towi62 15.08.2021 um 21:55:12 Uhr
Goto Top
Ja, der Grund zum Feiern ist ja jetzt gegeben, dank der Hilfe.
--- Paaaarrrrtttty !!! ---
Schönen abend.