Gleiche Dateien in Ordner Gruppieren und zusammenzählen
Hi, Leute
Wie kann ich eine Anzahl an Rechungnen/Dateien in einem Ordner finden die eine eindeutige aber NICHT bekannte endung haben
Habe eine Computerkassa wo D:\Tools\user.txt der jetzt angemeldete User drinn steht
Wenn eine Rechnung produziert wird, wird die Rechung.txt in D:\RECHNUNGEN abgelegt und eine kopie D:\USER\%heutigesadatum%\Rechnung.%user%
Ziel: Morgen sollen die Rechnungen die am Vortag ausgestellt wurden auf die User aufgeteilt... werden wer wieviel ausgestellt hat.
Storno Rechnungen sollen berücksichtigt weden doch das sollte ich mit einer for schleife lösen können da "Storno" in Datei steht
Erste Schicht Heute
USER.TXT=123
RECHUNG.TXT => RECHNUNGEN =>DRUCKEN RECHNUNG.TXT
kopie an =>USER\%heutigesdatum%\RECHNUNG.123
Zweite Schicht Heute
USER.TXT=456
RECHUNG.TXT => RECHNUNGEN =>DRUCKEN RECHNUNG.TXT
kopie an =>USER\%heutigesdatum%\RECHNUNG.456
Abrechung Morgen
?????
suche in USER\%gestrigesdatum%\*.123 Anzahl=Bsp.3>123.txt , *.xxx Anzahl=Bsp.7>888.txt "xxx= Bsp. Aushilfe hat andere id kann bis 999 gehen"
Danke
Wie kann ich eine Anzahl an Rechungnen/Dateien in einem Ordner finden die eine eindeutige aber NICHT bekannte endung haben
Habe eine Computerkassa wo D:\Tools\user.txt der jetzt angemeldete User drinn steht
Wenn eine Rechnung produziert wird, wird die Rechung.txt in D:\RECHNUNGEN abgelegt und eine kopie D:\USER\%heutigesadatum%\Rechnung.%user%
Ziel: Morgen sollen die Rechnungen die am Vortag ausgestellt wurden auf die User aufgeteilt... werden wer wieviel ausgestellt hat.
Storno Rechnungen sollen berücksichtigt weden doch das sollte ich mit einer for schleife lösen können da "Storno" in Datei steht
Erste Schicht Heute
USER.TXT=123
RECHUNG.TXT => RECHNUNGEN =>DRUCKEN RECHNUNG.TXT
kopie an =>USER\%heutigesdatum%\RECHNUNG.123
Zweite Schicht Heute
USER.TXT=456
RECHUNG.TXT => RECHNUNGEN =>DRUCKEN RECHNUNG.TXT
kopie an =>USER\%heutigesdatum%\RECHNUNG.456
Abrechung Morgen
?????
suche in USER\%gestrigesdatum%\*.123 Anzahl=Bsp.3>123.txt , *.xxx Anzahl=Bsp.7>888.txt "xxx= Bsp. Aushilfe hat andere id kann bis 999 gehen"
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 230062
Url: https://administrator.de/forum/gleiche-dateien-in-ordner-gruppieren-und-zusammenzaehlen-230062.html
Ausgedruckt am: 23.12.2024 um 16:12 Uhr
23 Kommentare
Neuester Kommentar
Hallo dax4fun!
Wenn ich Dich richtig verstanden habe, könnte das etwa so aussehen:
Grüße
bastla
[Edit] Sortierung hinzugefügt [/Edit]
Wenn ich Dich richtig verstanden habe, könnte das etwa so aussehen:
@echo off & setlocal
set "Ordner=D:\USER"
echo WScript.echo DateAdd("d",-1,Date)>%temp%\Gestern.vbs
for /f %%i in ('cscript //nologo %temp%\Gestern.vbs') do set "Gestern=%%i"
set "Users=%temp%\Users.txt"
type nul>Users.txt
for %%i in ("%Ordner%\%Gestern%\*.*") do findstr "%%~xi" "%Users%">nul||>>"%Users%" echo %%~xi
set "Liste=%Ordner%\Abrechnung-%Gestern%.txt"
del "%Liste%" 2>nul
for /f "delims=." %%i in ('sort "%Users%"') do for /f %%a in ('dir "%Ordner%\%Gestern%\*.%%i"^|findstr "Datei(en)"') do >>"%Liste%" echo %%i: %%a
bastla
[Edit] Sortierung hinzugefügt [/Edit]
Hallo dax4fun!
VBS wird nur für die Ermittlung des Datums von gestern verwendet (was sich zur Not auch per Batch lösen ließe) - zum Testen kannst Du auch einfach die Zeilen 4 und 5 durch
ersetzen ...
... der Rest sollte auch ohne ein Löschen von Dateien funktionieren ...
Grüße
bastla
VBS wird nur für die Ermittlung des Datums von gestern verwendet (was sich zur Not auch per Batch lösen ließe) - zum Testen kannst Du auch einfach die Zeilen 4 und 5 durch
set "Gestern=15.02.2014"
... der Rest sollte auch ohne ein Löschen von Dateien funktionieren ...
Grüße
bastla
Hallo dax4fun!
Freut mich ...
Als Ergänzung: Wenn Du Dateien, die das Wort "Storno" enthalten, von der Zählung ausschließen willst, müsste die Zeilen 13 etwa so aussehen:
[Edit] ... und da ja eigentlich die "Storno"-Datei eine Rechnung "neutralisieren" sollte, müsste dadurch die Gesamtzahl auch noch verringert werden - dann:
[/Edit]
Grüße
bastla
Freut mich ...
Als Ergänzung: Wenn Du Dateien, die das Wort "Storno" enthalten, von der Zählung ausschließen willst, müsste die Zeilen 13 etwa so aussehen:
for /f "delims=." %%i in ('sort "%Users%"') do for /f %%a in ('findstr /miv "Storno" "%Ordner%\%Gestern%\*.%%i"^|find /ic ".%%i"') do >>"%Liste%" echo %%i: %%a
for /f "delims=." %%i in ('sort "%Users%"') do for /f %%a in ('dir "%Ordner%\%Gestern%\*.%%i"^|findstr "Datei(en)"') do call :ProcessUser %%i %%a
goto :eof
:ProcessUser
set /a Anzahl=%2
for /f %%i in ('findstr /mi "Storno" "%Ordner%\%Gestern%\*.%1"') do set /a Anzahl-=2
>>"%Liste%" echo %1: %Anzahl%
Grüße
bastla
Hi,
versuch es mal so:
Transponieren heisst das, imo.
Gruss.
versuch es mal so:
@echo off &setlocal
set "line=SHOP_%SHOPNR% EINGANG:%IN% AUSGANG:%OUT% RECHNUNGSANZAHL:%S3%"
for /f "usebackqtokens=1*delims=: " %%a in ("%Liste%") do call makeline:"%%~a" "%%~b"
rem more code here
echo(%line%
goto:eof
:makeline
set "line=%line% %~1:%~2"
exit /b
Gruss.
Ok, here we go:
Gruss.
@ECHO OFF &SETLOCAL disableDelayedExpansion
SET "yesterday=20140218"
FOR %%a IN ("%yesterday%\*") DO (
SET /a bill%%~xa+=1
SET /a billcount+=1
)
FOR /f "delims=" %%a IN ('FINDSTR /mi "storno" "%yesterday%\*"') DO (
SET /a storno%%~xa+=1
SET /a stornocount+=1
)
SET "line=%yesterday:~6,2%.%yesterday:~4,2%.%yesterday:~0,4% Rechnungen: %billcount%, Storno: %stornocount%"
FOR /f "tokens=2*delims==." %%a IN ('SET bill.') DO (
IF DEFINED storno.%%a (
FOR /f %%c IN ('SET /a %%b-storno.%%a') DO CALL SET "line=%%line%%, %%a:%%c"
) ELSE (
CALL SET "line=%%line%%, %%a:%%b"
)
)
ECHO(%line%
Zur Berechnung der nicht stornierten Rechnungen kann der Rechnungszähler bei jedem Storno um 1 vermindert werden.
Zu Beginn der Batch kann ein beliebiges Verzeichnis eingestellt werden.
Gruss.
Zu Beginn der Batch kann ein beliebiges Verzeichnis eingestellt werden.
@ECHO OFF &SETLOCAL disableDelayedExpansion
CD /d "%UserProfile%\Rechnungen"
SET "yesterday=20140218"
FOR %%a IN ("%yesterday%\*") DO (
SET /a bill%%~xa+=1
SET /a billcount+=1
)
FOR /f "delims=" %%a IN ('FINDSTR /mi "storno" "%yesterday%\*"') DO (
SET /a storno%%~xa+=1
SET /a stornocount+=1
SET /a billcount-=1
)
SET "line=%yesterday:~6,2%.%yesterday:~4,2%.%yesterday:~0,4% Rechnungen: %billcount%, Storno: %stornocount%"
FOR /f "tokens=2*delims==." %%a IN ('SET bill.') DO (
IF DEFINED storno.%%a (
FOR /f %%c IN ('SET /a %%b-storno.%%a') DO CALL SET "line=%%line%%, %%a:%%c"
) ELSE (
CALL SET "line=%%line%%, %%a:%%b"
)
)
ECHO(%line%