anmelder
Goto Top

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:

@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

Content-Key: 351162

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

Ausgedruckt am: 19.03.2024 um 05:03 Uhr

Mitglied: 134464
Lösung 134464 09.10.2017 aktualisiert um 20:48:25 Uhr
Goto Top
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!
    )
)
Mitglied: anmelder
anmelder 09.10.2017 um 20:07:22 Uhr
Goto Top
Ich klicke auf "Zur Lösung beitragen" um zu antworten und das Thema wird als gelöst markiert? Komisch face-smile

Danke schon mal für die schnelle Antwort.

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

Mit englischen Links kann ich nicht wirklich etwas anfangen und die Zeile
echo %%~nxa| findstr /b "7" >nul 2>&1 && (
habe ich auch nicht verstanden.
Mitglied: 134464
134464 09.10.2017 um 20:54:40 Uhr
Goto Top
Zitat von @anmelder:

Ich klicke auf "Zur Lösung beitragen" um zu antworten und das Thema wird als gelöst markiert? Komisch face-smile
Wieso, wenn es die Lösung war ist das ja richtig so.

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.
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.
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?
Mitglied: anmelder
anmelder 10.10.2017 um 15:23:55 Uhr
Goto Top
Soweit habe ich das Vorhaben zwar verstanden aber es erfolgt keine Ausgabe der gefundenen Dateien. Es bleibt dabei daß nur durch echo %%a eine Auflistung der gefundenen Dateien erfolgt. Der Code soll unter Windows 10 laufen, funktioniert das bei dir?
Mitglied: anmelder
anmelder 10.10.2017 um 15:30:04 Uhr
Goto Top
Danke, es läuft. Irgendwas hat meine Temp Datei gelöscht die mit 7 beginnt. So ist das halt wenn man im Temp Ordner arbeitet. face-smile