For Schleife kaputt?
Hallo,
ich finde den Fehler nicht...
irgendwie bekomme ich ständig denselben Inhalt in "Name.txt" und kann dann nicht weiterarbeiten.... Weiß einer warum? In der "started.txt" steht übrigens:
Und hier mein Code.
Ich wäre natürlich auch einverstanden, die Zeile direkt in eine Variable zu packen, muss aber nicht sein.
Danke im Voraus!
LG
Peter
ich finde den Fehler nicht...
irgendwie bekomme ich ständig denselben Inhalt in "Name.txt" und kann dann nicht weiterarbeiten.... Weiß einer warum? In der "started.txt" steht übrigens:
Zeile1
Zeile2
Zeile3
Zeile4
Und hier mein Code.
@echo off & Setlocal
:Begin
if exist "Started.txt" del "Started.txt" /s /q >NUL
dir /od /b "Started">"Started.txt"
for /f "usebackq delims=" %%a in ("Started.txt") DO (
call :ForEveryStarted "%%a"
)
goto :end
:ForEveryStarted
echo %date% %time% Programm ist gerade bei "ForEveryStarted".
if exist "name.txt" del "name.txt" /s /q >NUL
echo %~1>"name.txt"
echo Die Zeile heisst: %~1
set "StartedProject="
set /p "StartedProjekt="<"name.txt"
:end
pause
Ich wäre natürlich auch einverstanden, die Zeile direkt in eine Variable zu packen, muss aber nicht sein.
Danke im Voraus!
LG
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 314476
Url: https://administrator.de/forum/for-schleife-kaputt-314476.html
Ausgedruckt am: 19.04.2025 um 02:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
Ein am Anfang sollte dir weiterhelfen und dann anstelle der % nimmst du die !.
Die Geheimnisse des Batch Zeilen Interpreters
http://ss64.com/nt/delayedexpansion.html
https://blogs.msdn.microsoft.com/oldnewthing/20060823-00/?p=29993
Gruß,
Peter
@echo off & Setlocal
setlocal EnableDelayedExpansion
Die Geheimnisse des Batch Zeilen Interpreters
http://ss64.com/nt/delayedexpansion.html
https://blogs.msdn.microsoft.com/oldnewthing/20060823-00/?p=29993
Gruß,
Peter
Moin Peter32,
ich kann in deinem oben geposteten Code weder erkennen, wozu du die Variable %StartedProject% überhaupt setzen willst und - da sie immer nur gesetzt, aber nie benutzt wird- kann ich auch nicht erkennen, warum du meinst, in Name.txt (bzw. in %StartedProject%) stünde immer der gleiche Inhalt.
Jedenfalls lässt sich dein Code zusammendampfen auf
Du brauchst zur Ausgabe der Laufvariablen gar kein Zwischenparken in einer Variablen %StartedProject%.
Wenn du das dennoch meinst machen zu müssen, dann wäre eine Ausgabe wie in der zweiten auskommentierten Zeile (zweite REM-Zeile) vorgekaspert machbar.
Das sollte deine Rückfrage "Welche % muss ich in meinem Code mit einem ! ersetzen, sodass es funktioniert?" beantworten.
Grüße
Biber
ich kann in deinem oben geposteten Code weder erkennen, wozu du die Variable %StartedProject% überhaupt setzen willst und - da sie immer nur gesetzt, aber nie benutzt wird- kann ich auch nicht erkennen, warum du meinst, in Name.txt (bzw. in %StartedProject%) stünde immer der gleiche Inhalt.
Jedenfalls lässt sich dein Code zusammendampfen auf
@echo off & Setlocal enabledelayedexpansion
:Begin
for /f "delims=" %%a in ('dir /od /b "Started"') DO (
echo Die Zeile heisst: %%a
REM Alternativ zur Vorzeile ist nä. Zeile mit Variable
REM set "StartedProject=%%a" & echo StartedProject heisst !StartedProject!
)
pause
Du brauchst zur Ausgabe der Laufvariablen gar kein Zwischenparken in einer Variablen %StartedProject%.
Wenn du das dennoch meinst machen zu müssen, dann wäre eine Ausgabe wie in der zweiten auskommentierten Zeile (zweite REM-Zeile) vorgekaspert machbar.
Das sollte deine Rückfrage "Welche % muss ich in meinem Code mit einem ! ersetzen, sodass es funktioniert?" beantworten.
Grüße
Biber
Hallo,
Und das obwohl Batch schon vernünftig Benutzerbar seit Version 3.3 jetzt ca. 20 Jahre existiert. Willst du allerdings die neuere Version lernen dann nimm Powershell, wer weiß wie lange noch DOS und Batch noch existiert bzw. Laufen tut.
Du musst dir nur klar werden was ist der Zeitpunkt wo der Kommandoprozessor deine Batch liest und wann ist der Zeitpunkt wo du Variblen bzw. deren Inhalt verändern willst.
Es hat ja keiner gesagt das Batch einfach ist, auch wenn es schon ein paar Tage existiert 

Gruß,
Peter
Und das obwohl Batch schon vernünftig Benutzerbar seit Version 3.3 jetzt ca. 20 Jahre existiert. Willst du allerdings die neuere Version lernen dann nimm Powershell, wer weiß wie lange noch DOS und Batch noch existiert bzw. Laufen tut.
Also wenn ich alle % mit ! ersetze, funktioniert es auch nicht.
Von alle war auch nicht die redeIch habe die 3 Links mal gelesen aber nicht wirklich vollständig nachvollziehen können leider.
Obwohl dies hier schon eine gute Darstellung und erklärung bietet, nochmals lesen und die Begriffe welche dir fremd sind nachlesen / andere Quellen nutzen. Das Internet ist heutzuitage voll von brauchbaren Informationen. Es gibt hier viele Benutzer welche noch Batch lernen mussten aber es weder Öffentliches Internet noch Suchmaschinen gab. Auch Büchereien hatten noch keine Bücher über diese Themen. Welche % muss ich in meinem Code mit einem ! ersetzen, sodass es funktioniert?
Wurde dir am Beispiel vom @Biber gut demonstriert Gruß,
Peter