Dateinamen aus Verzeichnis Auslesen und Stringzerlegung zur Datumsanalyse
Guten Morgen.
Ich habe ein Problem mit einer Batch- Aufgabe. Es soll der Inhalt eines Verzeichnisses überprüft werden. In dem Verzeichnis sind Dateien mit Datum im Format "JJJJ.MM.TT__Dateiname" und es soll die aktuellste Datei mit dem Namen "Basis-Backup.7z" gefunden werden. Dazu habe ich den nachfolgenden Code.
Beim Ausführen des Codes wird die For-Schleife korrekt durchlaufen und die entsprechende Datei auch gefunden (Erfüllung der If-Bedingung). Auch der Inhalt der Laufvariable &&a wird korrekt in die Datei "inhalt_temp.txt" geschrieben. Allerdings werden sämtliche set- Befehle nachfolgend ignoriert. Die Echo-Ausgaben von Tag, Monat und Jahr sind leer.
Kann mir jemand verraten, wo der Fehler liegt?
Besten Dank im Voraus!
Caspi
Ich habe ein Problem mit einer Batch- Aufgabe. Es soll der Inhalt eines Verzeichnisses überprüft werden. In dem Verzeichnis sind Dateien mit Datum im Format "JJJJ.MM.TT__Dateiname" und es soll die aktuellste Datei mit dem Namen "Basis-Backup.7z" gefunden werden. Dazu habe ich den nachfolgenden Code.
del inhalt_temp.txt /s /q
pushd "inhalt_temp.txt"
for /F "tokens=1" %%a in ('dir /b /a:-d *Basis-Backup.7z') do (
if exist %%a (
echo %%a >> inhalt_temp.txt
set "str=%%a"
echo Aktuelles Datum: %str%
set jahr=%str:~0,4%
set monat=%str:~5,2%
set tag=%str:~8,2%
echo Tag: %tag%
echo Monat: %monat%
echo Jahr: %jahr%
)
)
Beim Ausführen des Codes wird die For-Schleife korrekt durchlaufen und die entsprechende Datei auch gefunden (Erfüllung der If-Bedingung). Auch der Inhalt der Laufvariable &&a wird korrekt in die Datei "inhalt_temp.txt" geschrieben. Allerdings werden sämtliche set- Befehle nachfolgend ignoriert. Die Echo-Ausgaben von Tag, Monat und Jahr sind leer.
Kann mir jemand verraten, wo der Fehler liegt?
Besten Dank im Voraus!
Caspi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 256699
Url: https://administrator.de/contentid/256699
Ausgedruckt am: 25.11.2024 um 06:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Caspi, Willkommen auf Administrator.de!
Dir fehlt die verzögerte Variablenerweiterung wenn du Variablen innerhalb von Klammern bzw. der FOR-Schleife setzt und ausgeben möchtest.
Die Variablen müssen dann mit Ausrufezeichen anstatt Prozentzeichen umschlossen werden.
Lese am besten das oben verlinkte Tutorial zur FOR-Schleife, darin wird das noch mal ausführlich von @Friemler erläutert.
Grüße Uwe
Dir fehlt die verzögerte Variablenerweiterung wenn du Variablen innerhalb von Klammern bzw. der FOR-Schleife setzt und ausgeben möchtest.
setlocal enabledelayedexpansion
set "str=%%a"
echo Aktuelles Datum: !str!
set jahr=!str:~0,4!
set monat=!str:~5,2!
set tag=!str:~8,2!
echo Tag: !tag!
echo Monat: !monat!
echo Jahr: !jahr!
Lese am besten das oben verlinkte Tutorial zur FOR-Schleife, darin wird das noch mal ausführlich von @Friemler erläutert.
Grüße Uwe
Hallo caspi-pirna und auch von mir ein Willkommen!
Da Du ja an sich die aktuellste Datei suchst, wäre mein Ansatz eher:
Was machst du in weiterer Folge eigentlich noch mit den Variablen %jahr%, %monat% und %tag%?
Grüße
bastla
Da Du ja an sich die aktuellste Datei suchst, wäre mein Ansatz eher:
for /F "delims=" %%a in ('dir /b/on/a-d 20*Basis-Backup.7z') do set "str=%%a"
>inhalt_temp.txt echo %str%
echo Aktuelles Datum: %str%
set "jahr=%str:~0,4%"
set "monat=%str:~5,2%"
set "tag=%str:~8,2%"
echo Tag: %tag%
echo Monat: %monat%
echo Jahr: %jahr%
Grüße
bastla