RECHNUNGS ABFRAGE PER BATCH (ORDNER STRUKTUR)
Hi Leute
habe das Problem das Daten zur Abrechung in Ordnern per Datum sortiert sind und sie in Txt Dateien Stehen.
Bsp: Im ORDNER "20131214" befindet sich "555123EOD...20131214.txt" wo drin steht "ID555123 EINGANG:207 AUSGANG:109 ANZAHL:112"
Wie kann ich eine "Batch Abfrage" basteln wo ich angeben kann:
Suche in Ordnern von 20131201 bis 20131231 wo sich eine 555123 txt befindet und rechne die einzelnen Daten aus gefundenen txt´s EINGANG AUSGANG UND ANZAHL ZUSAMMEN
Danke
PS: Während ich die Frage Verfasst habe ist mir ein Licht aufgegangen aber bin mir noch immer unsicher das ich es schaffe
habe das Problem das Daten zur Abrechung in Ordnern per Datum sortiert sind und sie in Txt Dateien Stehen.
Bsp: Im ORDNER "20131214" befindet sich "555123EOD...20131214.txt" wo drin steht "ID555123 EINGANG:207 AUSGANG:109 ANZAHL:112"
Wie kann ich eine "Batch Abfrage" basteln wo ich angeben kann:
Suche in Ordnern von 20131201 bis 20131231 wo sich eine 555123 txt befindet und rechne die einzelnen Daten aus gefundenen txt´s EINGANG AUSGANG UND ANZAHL ZUSAMMEN
Danke
PS: Während ich die Frage Verfasst habe ist mir ein Licht aufgegangen aber bin mir noch immer unsicher das ich es schaffe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 224565
Url: https://administrator.de/contentid/224565
Ausgedruckt am: 18.11.2024 um 07:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo dax4fun,
vielleicht hilft das als Denkanstoss:
Das Script durchsucht in einem Root-Ordner alle Unterordner nach einer Textdatei nach dem Muster 555123*.txt und sucht in diesen Files dann nach einer Zeile die mit ID555123 beginnt und addiert die jeweiligen Werte aus den Files.
Den Rest kannst du ja mit Variablen versehen und eine Abfrage mit
Grüße Uwe
vielleicht hilft das als Denkanstoss:
@echo off & setlocal ENABLEDELAYEDEXPANSION
set "searchroot=c:\temp\source"
for /f "delims=" %%a in ('dir /B /S /A-D "%searchroot%\555123*.txt"') DO @(
for /f "tokens=3,5,7 delims=: " %%b IN ('findstr /B "ID555123" "%%a"') DO @(
set /a eingang +=%%b
set /a ausgang +=%%c
set /a anzahl +=%%d
)
)
echo Gesamt Eingang: !eingang!
echo Gesamt Ausgang: !ausgang!
echo Gesamt Anzahl: !anzahl!
Den Rest kannst du ja mit Variablen versehen und eine Abfrage mit
set /p
basteln.Grüße Uwe
Hallo dax4fun!
Du kannst bei Verwendung der Schreibweise "JJJJMMTT" einfach mit
den Datumswert erhöhen.
Da allerdings Batch mit Datum nicht so richtig gut umgehen kann, ist die Abfrage auf das Monatsende etwas knifflig. Zerlegen könntest Du den Datumswert jedenfalls so:
Die Operatoren (etwa "
Grüße
bastla
Du kannst bei Verwendung der Schreibweise "JJJJMMTT" einfach mit
set /a Datum+=1
Da allerdings Batch mit Datum nicht so richtig gut umgehen kann, ist die Abfrage auf das Monatsende etwas knifflig. Zerlegen könntest Du den Datumswert jedenfalls so:
set "Jahr=%Datum:~,4%"
set "Monat=%Datum:~4,2%"
set "Tag=%Datum:~6,2%"
LSS
") für einen Vergleich findest Du in der Online-Hilfe (mit "if /?
") ...Grüße
bastla
Hallo Zusammen,
ich bin mir nicht sicher, ob es wirklich notwendig ist, aber müsste man nicht die maximale Anzahl Tage im Monat kennen?
... in der FOR /L Schleife dann entsprechend mit %%i agieren ...
Grüße
rubberman
ich bin mir nicht sicher, ob es wirklich notwendig ist, aber müsste man nicht die maximale Anzahl Tage im Monat kennen?
@echo off &setlocal
set "Datum=20131201"
set /a "Month = 1%Datum:~4,2% %% 100, Year = %Datum:~,4%"
set /a "MaxDOM = 30 + !(((Month & 9) + 6) %% 7) + !(Month ^ 2) * (!(Year %% 4) - !(Year %% 100) + !(Year %% 400) - 2)"
for /l %%i in (%Datum% 1 %Datum:~,6%%MaxDOM%) do (
echo %%i
)
pause
Grüße
rubberman