Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Dateinamen aus Verzeichnis Auslesen und Stringzerlegung zur Datumsanalyse

Frage Entwicklung Batch & Shell

Mitglied: caspi-pirna

caspi-pirna (Level 1) - Jetzt verbinden

04.12.2014 um 07:45 Uhr, 803 Aufrufe, 3 Kommentare

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.

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
Mitglied: colinardo
LÖSUNG 04.12.2014, aktualisiert um 09:45 Uhr
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.
01.
setlocal enabledelayedexpansion 
02.
 
03.
set "str=%%a"  
04.
echo Aktuelles Datum: !str! 
05.
 
06.
set jahr=!str:~0,4! 
07.
set monat=!str:~5,2! 
08.
set tag=!str:~8,2! 
09.
 
10.
echo Tag: !tag! 
11.
echo Monat: !monat! 
12.
echo Jahr: !jahr!
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
Bitte warten ..
Mitglied: caspi-pirna
04.12.2014 um 09:44 Uhr
Hallo Uwe,
besten Dank für den Hinweis! Das war die Lösung für das Problem!
Einen schönen Tag noch!
Grüße,
Caspi
Bitte warten ..
Mitglied: bastla
04.12.2014 um 13:41 Uhr
Hallo caspi-pirna und auch von mir ein Willkommen!

Da Du ja an sich die aktuellste Datei suchst, wäre mein Ansatz eher:
01.
for /F "delims=" %%a in ('dir /b/on/a-d 20*Basis-Backup.7z') do set "str=%%a" 
02.
>inhalt_temp.txt echo %str% 
03.
echo Aktuelles Datum: %str% 
04.
set "jahr=%str:~0,4%" 
05.
set "monat=%str:~5,2%" 
06.
set "tag=%str:~8,2%" 
07.
			  
08.
echo Tag: %tag% 
09.
echo Monat: %monat% 
10.
echo Jahr: %jahr%
Was machst du in weiterer Folge eigentlich noch mit den Variablen %jahr%, %monat% und %tag%?

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Datei aus Verzeichnis auslesen? (4)

Frage von freshman2017 zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateinamen auslesen und in einer Schleife benutzen (12)

Frage von TeholBeddict zum Thema Batch & Shell ...

Visual Studio
Vb.net Datenfelder aus Word 2003 Dokument auslesen (3)

Frage von Herbrich19 zum Thema Visual Studio ...

Batch & Shell
gelöst PowerShell Skript für doppelte Dateinamen (1)

Frage von janelsaesser zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Webbrowser
Windows 7 unbeliebte Internetseite sperren (15)

Frage von Daoudi1973 zum Thema Webbrowser ...

ISDN & Analoganschlüsse
gelöst Splitter - RJ45 zu RJ11? (13)

Frage von Waishon zum Thema ISDN & Analoganschlüsse ...

Linux Desktop
KDE Slimbook (11)

Link von Frank zum Thema Linux Desktop ...

LAN, WAN, Wireless
gelöst Suche Firmware Image für Cisco Aironet 1252 (10)

Frage von Herbrich19 zum Thema LAN, WAN, Wireless ...