Wert aus Batch Schleife in Variable speichern
Ich möchte aus einem Verzeichnis alle Dateien mit einer bestimmten Endung anzeigen lassen. Die Dateien sind nummeriert. Der Nutzer soll eine Zahl für die gewünschte Datei eintippen und die Datei mit dem Namen wird später geladen.
Folgenden Code habe ich schon:
Der Echo Befehl gibt die Dateinamen richtig aus. Wenn die Datei mit 7 beginnt soll Variable test "c:\temp\7.txt" enthalten.
Allgemein finde ich komisch daß im deutschsprachigen Internet die Meinung verbreitet wird daß in Batch Dateien keine Arrays existieren. Obwohl ich den Code nicht verstehe scheint hier anderes zu stehen:
Code
Folgenden Code habe ich schon:
@echo off
for /R c:\temp\ %%a in (*.tmp) do (
echo %%a
if %%a:~,8,1% == 7 echo set test=%%a
)
echo Gewählter Pfadname: %test%
Der Echo Befehl gibt die Dateinamen richtig aus. Wenn die Datei mit 7 beginnt soll Variable test "c:\temp\7.txt" enthalten.
Allgemein finde ich komisch daß im deutschsprachigen Internet die Meinung verbreitet wird daß in Batch Dateien keine Arrays existieren. Obwohl ich den Code nicht verstehe scheint hier anderes zu stehen:
Code
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 351162
Url: https://administrator.de/forum/wert-aus-batch-schleife-in-variable-speichern-351162.html
Ausgedruckt am: 07.04.2025 um 09:04 Uhr
5 Kommentare
Neuester Kommentar

Beschäftige dich mal mit delayed expansion
@echo off & setlocal enabledelayedexpansion
for /R c:\temp\ %%a in (*.tmp) do (
echo %%~nxa| findstr /b "7" >nul 2>&1 && (
set "test=%%a"
echo !test!
)
)

Zitat von @anmelder:
Ich klicke auf "Zur Lösung beitragen" um zu antworten und das Thema wird als gelöst markiert? Komisch
Wieso, wenn es die Lösung war ist das ja richtig so.Ich klicke auf "Zur Lösung beitragen" um zu antworten und das Thema wird als gelöst markiert? Komisch
Der Code erzeugt die Meldung: "Ungültiger Parameter für den setlocal Befehl"
Ich vermute mal daß der Befehl so heißen soll:
@echo off & setlocal EnableDelayedExpansion
Ja, war ein Tippfehler, ist oben korrigiert.Ich vermute mal daß der Befehl so heißen soll:
@echo off & setlocal EnableDelayedExpansion
Mit englischen Links kann ich nicht wirklich etwas anfangen
Sollte eigentlich jeder der im IT Business tätig ist.und die Zeile
echo %%~nxa| findstr /b "7" >nul 2>&1 && (
habe ich auch nicht verstanden.
Nun das ganze ist ein ähnlicher Aufbau statt der if Prüfung.echo %%~nxa| findstr /b "7" >nul 2>&1 && (
habe ich auch nicht verstanden.
Es wird der Name der Datei(n) inkl. Dateierweiterung (x) an findstr geschickt welches überprüft ob der Name mit einer 7 beginnt. Das >nul 2>&1 unterdrückt alle Ausgaben von findstr und das && bedeutet daß der folgende Teil in den Klammern nur ausgeführt wird wenn findstr Erfolg hatte, nun kappiche?