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

Gleiche Dateien in Ordner Gruppieren und zusammenzählen

Frage Entwicklung Batch & Shell

Mitglied: dax4fun

dax4fun (Level 1) - Jetzt verbinden

15.02.2014, aktualisiert 19.02.2014, 1711 Aufrufe, 23 Kommentare, 4 Danke

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
Mitglied: bastla
16.02.2014, aktualisiert um 00:25 Uhr
Hallo dax4fun!

Wenn ich Dich richtig verstanden habe, könnte das etwa so aussehen:
01.
@echo off & setlocal 
02.
set "Ordner=D:\USER" 
03.
 
04.
echo WScript.echo DateAdd("d",-1,Date)>%temp%\Gestern.vbs 
05.
for /f %%i in ('cscript //nologo %temp%\Gestern.vbs') do set "Gestern=%%i" 
06.
 
07.
set "Users=%temp%\Users.txt" 
08.
type nul>Users.txt 
09.
for %%i in ("%Ordner%\%Gestern%\*.*") do findstr "%%~xi" "%Users%">nul||>>"%Users%" echo %%~xi 
10.
 
11.
set "Liste=%Ordner%\Abrechnung-%Gestern%.txt" 
12.
del "%Liste%" 2>nul 
13.
for /f "delims=." %%i in ('sort "%Users%"') do for /f %%a in ('dir "%Ordner%\%Gestern%\*.%%i"^|findstr "Datei(en)"') do >>"%Liste%" echo %%i: %%a
Grüße
bastla

[Edit] Sortierung hinzugefügt [/Edit]
Bitte warten ..
Mitglied: dax4fun
16.02.2014, aktualisiert um 00:31 Uhr
Danke bastla
hab aber ein Problem mit vbs, das würde mir noch mehr probleme bereiten. Windows weiß nicht wie vbs öffnen ... hab mich schon durchgelesen registry editieren aber das kann noch warten.

Ich hab jetzt seit Veröffentlichung des Beitrages mein Problem immer weiter und weiter gekürzt :

Nachdem alle Dateien rechnungxyz.123 und rechnungxyz.345 im selben Ordner landen
warum nicht von der ersten Datei die endung in Variable Packen nachschauen wieviele es gibt danach die 123 Dateien löschen und wieder suchen bis der Ordner Leer ist

das ist glaube ich viel einfacher oder ???

Gruß
dax
Bitte warten ..
Mitglied: bastla
LÖSUNG 16.02.2014, aktualisiert um 01:02 Uhr
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
set "Gestern=15.02.2014"
ersetzen ...

... der Rest sollte auch ohne ein Löschen von Dateien funktionieren ...

Grüße
bastla
Bitte warten ..
Mitglied: dax4fun
16.02.2014 um 00:45 Uhr
Aha, Ok Probiere ich mal

Kann dir nicht gleich eine Reaktion geben, muss mal deinen Code schritt für schritt durchgehen um ihn zu verstehen... ich will ja was Lernen damit ich dich nicht immer bitten muß

Danke dir
LG
dax
Bitte warten ..
Mitglied: dax4fun
16.02.2014 um 01:02 Uhr
WOW FUNKTIONIERT !

Danke
LG
dax
Bitte warten ..
Mitglied: bastla
16.02.2014, aktualisiert um 16:53 Uhr
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:
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
[Edit] ... und da ja eigentlich die "Storno"-Datei eine Rechnung "neutralisieren" sollte, müsste dadurch die Gesamtzahl auch noch verringert werden - dann:
01.
for /f "delims=." %%i in ('sort "%Users%"') do for /f %%a in ('dir "%Ordner%\%Gestern%\*.%%i"^|findstr "Datei(en)"') do call :ProcessUser %%i %%a 
02.
goto :eof 
03.
 
04.
:ProcessUser 
05.
set /a Anzahl=%2 
06.
for /f %%i in ('findstr /mi "Storno" "%Ordner%\%Gestern%\*.%1"') do set /a Anzahl-=2 
07.
>>"%Liste%" echo %1: %Anzahl%
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: Endoro
16.02.2014 um 19:14 Uhr
Vorschlag am Rande:
01.
@ECHO OFF &SETLOCAL disableDelayedExpansion 
02.
FOR %%a IN (*) DO IF NOT "%%~xa"=="" (SET /a %%~xa+=1) ELSE SET /a .+=1 
03.
SET .
Gruss.
Bitte warten ..
Mitglied: bastla
16.02.2014 um 20:20 Uhr
@ Endoro

Sehr hybsch ...

Grüße
bastla
Bitte warten ..
Mitglied: dax4fun
17.02.2014, aktualisiert um 00:21 Uhr
Ich zeig euch mal was

100 % 1000 Fehler drinn bzw. unnötige Sachen aber es funkt
100%reine Scriptschnippsel hier aus dem Forum bzw. aus dem Internet abgewandelt

Aufgabe is es "echo SHOP_%EPSONNAME% EINGANG:%IN% AUSGANG:%OUT% RECHNUNGSANZAHL:%S3%"
zu erweitern mit ONL1 ONL2....ONL999 Variblen, halt die User die eingelogt waren inkl. Ticketanzahl um es auf einen FTP zu schieben (update.exe)




%COMPUTERNAME% CAS01_555123
%EPSONNAME%
555123
%ONLUSER% 001 bis 999
%STAMP%
Datum wann das letzte mal eod ausgeführt wurde
sky.exe VPN verbindung
update.exe
FTP update funktion wenn cas01_555xxx.exe wenn vorhanden dann downloaden und ausführen
eod.exe zum Kassensystem mitgelieferte Anwendung (die später bei :EOD formatiert wird)
set /a IN=%S1% / 100
eod.exe liefert cent Beträge

IN D:\config.txt
ONL=0/1 User abfrage ja nein
BIX=0/1
ist ein neuer Drucker BIXOLON falls der in verwendung sein sollte
FIS=0/1 //Auslandssystem Rechnung wird weitergeleitet auf einen Staatlichesdruckersystem wegen Steuer per map drive




01.
 
02.
@echo off 
03.
rem ping -n 15 127.0.0.1 
04.
 
05.
REM ############CREATE COMPUTERNAMES######################## 
06.
for /f "tokens=2 delims=_" %%s in ("%computername%") do set "EPSONNAME=%%s" 
07.
 
08.
REM ######################################################## 
09.
REM ################# CREATE DATES ######################### 
10.
REM ######################################################## 
11.
 
12.
REM ################# CREATE TIME ########################## 
13.
set STD=%time:~0,2% 
14.
if "%STD:~0,1%"==" " set STD=0%STD:~1,1% 
15.
 
16.
set MIN=%TIME:~3,2% 
17.
 
18.
REM ################# CREATE STAMP ######################### 
19.
if NOT EXIST D:\Tools\stamp.txt echo 10> D:\Tools\stamp.txt 
20.
 
21.
REM ################# CREATE GESTERN ####################### 
22.
set gjahr=%date:~-4% 
23.
set gmonat=777%date:~-7,2% 
24.
set gtag=1000%date:~-10,2% 
25.
set /a gvormonat=%gmonat%-1 
26.
 
27.
if not %gtag%==100001 set /a gtag=%gtag%-1 & goto punktzwei 
28.
 
29.
for %%j in (77700 77701 77703 77705 77707 77708 77710) do if %gvormonat%==%%j set /a gtag=100031 & goto punkteins 
30.
for %%k in (77704 77706 77709 77711) do if %gvormonat%==%%k set /a gtag=100030 & goto punkteins 
31.
 
32.
set /a gtag=100028 
33.
for %%l in (2008 2012 2016 2020 2024) do IF %gjahr%==%%l set /a gtag=100029 
34.
 
35.
:punkteins 
36.
if not %gmonat%==77701 set /a gmonat=%gmonat%-1 & goto punktzwei 
37.
set /a gmonat=77712 
38.
set /a gjahr=%jahr%-1 
39.
 
40.
:punktzwei 
41.
set gtag=%gtag:~-2,2% 
42.
set gmonat=%gmonat:~-2,2% 
43.
 
44.
set /a GESTERN=%gjahr%%gmonat%%gtag% 
45.
ping 127.0.0.1 
46.
REM ################# CREATE HEUTE ######################### 
47.
set jahr=%date:~-4% 
48.
set monat=%date:~-7,2% 
49.
set tag=%date:~-10,2% 
50.
set /a HEUTE=%jahr%%monat%%tag% 
51.
REM ######################################################## 
52.
 
53.
REM ######################################################## 
54.
REM ################# LOAD ONLUSER ######################### 
55.
REM ######################################################## 
56.
for /f %%u in (D:\Tools\onl.txt) do set ONLUSER=%%u 
57.
 
58.
 
59.
REM ######################################################## 
60.
REM ################# LOAD STAMP ########################### 
61.
REM ######################################################## 
62.
for /f %%m in (D:\Tools\stamp.txt) do set STAMP=%%m 
63.
 
64.
REM ######################################################## 
65.
REM ################# ALLE VARIABLEN ####################### 
66.
REM ######################################################## 
67.
echo %GESTERN% 
68.
echo %HEUTE% 
69.
echo %COMPUTERNAME% 
70.
echo %EPSONNAME% 
71.
echo %ONLUSER% 
72.
echo %STAMP% 
73.
echo %STD% 
74.
echo %MIN% 
75.
 
76.
REM ######################################################## 
77.
REM ################# CREATE FOLDERS ####################### 
78.
REM ######################################################## 
79.
IF NOT EXIST C:\TICKETS md C:\TICKETS 
80.
IF NOT EXIST D:\V8\TICKETS md D:\V8\TICKETS 
81.
IF NOT EXIST D:\V8\ONL md D:\V8\ONL 
82.
IF NOT EXIST D:\V8\ONL\%HEUTE% md D:\V8\ONL\%HEUTE% 
83.
 
84.
REM ######################################################## 
85.
REM #################### SHEDULER########################### 
86.
REM ######################################################## 
87.
goto sheduler 
88.
 
89.
:LOADCONFIG 
90.
REM ######################################################## 
91.
REM ################# LOAD CONFIG ########################## 
92.
REM ######################################################## 
93.
for /f "tokens=2 delims==" %%o in ('findstr "/c:ONL=" D:\config.txt') do set ONL=%%o 
94.
 
95.
for /f "tokens=2 delims==" %%b in ('findstr "/c:BIX=" D:\config.txt') do set BIX=%%b 
96.
 
97.
for /f "tokens=2 delims==" %%f in ('findstr "/c:FIS=" D:\config.txt') do set FIS=%%f 
98.
 
99.
IF "%BIX%"=="1" goto BIXOLON 
100.
IF "%BIX%" NEQ "1" SET BIX=0 
101.
IF "%FIS%" NEQ "1" SET FIS=0 
102.
IF "%ONL%" NEQ "1" SET ONL=0 
103.
 
104.
REM ######################################################## 
105.
REM ################# START LOOP ########################### 
106.
REM ######################################################## 
107.
:ping 
108.
start /WAIT /MIN D:\Tools\update.exe 
109.
 
110.
if "%FIS%"=="1" net use R: \\192.168.234.35\txt /user:fiskal fiskal /persistent:no 
111.
 
112.
ping 10.10.10.50 
113.
if ERRORLEVEL == 1 goto reconnect 
114.
 
115.
if "%ONL%"=="1" copy C:\TICKETS\*.txt D:\V8\ONL\%HEUTE% 
116.
 
117.
if "%ONL%"=="1" rename D:\V8\ONL\%HEUTE%\*.txt D:\V8\ONL\%HEUTE%\*.%ONLUSER% 
118.
 
119.
ping 127.0.0.1 
120.
 
121.
if "%FIS%"=="1" move C:\TICKETS\*.txt D:\V8\TICKETS 
122.
 
123.
ping -n 2 127.0.0.1 
124.
for /f %%t IN ('dir /b D:\V8\TICKETS\*.txt') do move D:\V8\TICKETS\%%t R:\ 
125.
IF EXIST C:\TICKETS\*.* del /Q C:\TICKETS\*.* > NUL 
126.
 
127.
REM ######################################################## 
128.
REM ################### STOP LOOP ########################## 
129.
REM ######################################################## 
130.
goto ping 
131.
 
132.
 
133.
REM ######################################################## 
134.
REM ################### SET BIXOLON ######################## 
135.
REM ######################################################## 
136.
:BIXOLON 
137.
for /f "skip=4 tokens=3" %%a in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\ESDS\PEpson" /v PEpsonComportSetting') do set PRN=%%a 
138.
 
139.
IF "%PRN%"=="COM5:115200,n,8,1" goto ping 
140.
 
141.
IF "%PRN%" NEQ "COM5:115200,n,8,1" goto instalbix 
142.
 
143.
:instalbix 
144.
REG ADD \\HKEY_LOCAL_MACHINE\SOFTWARE\ESDS\PEpson /v PEpsonComportSetting /t REG_SZ /d COM5:115200,n,8,1 
145.
 
146.
start D:\Tools\Printer\bixdriver.exe 
147.
start D:\Tools\Printer\bix2usb.exe 
148.
REM ######################################################## 
149.
REM ####################### END ############################ 
150.
REM ######################################################## 
151.
:end 
152.
exit 
153.
 
154.
REM ######################################################## 
155.
REM #################### START VPN ######################### 
156.
REM ######################################################## 
157.
:reconnect 
158.
START /wait /MIN D:\Tools\sky.exe 
159.
goto ping 
160.
 
161.
REM ######################################################## 
162.
REM #################### SHEDULER ########################## 
163.
REM ######################################################## 
164.
:sheduler 
165.
 
166.
IF %STD%=="00" goto weiteretasks 
167.
IF %STD%=="01" goto weiteretasks 
168.
IF %STD%=="02" goto weiteretasks 
169.
if %STAMP% NEQ %GESTERN% goto starteod 
170.
 
171.
:weiteretasks 
172.
 
173.
goto LOADCONFIG 
174.
 
175.
REM ######################################################## 
176.
REM #################### START EOD ######################### 
177.
REM ######################################################## 
178.
:starteod 
179.
 
180.
eod /shop:%EPSONNAME%:127.0.0.1 /date:%GESTERN% /output:%COMPUTERNAME%raw.txt 
181.
@echo off & setlocal 
182.
	set "S1=0" 
183.
	set "S2=0" 
184.
	set "S3=0" 
185.
 
186.
for /f "usebackq skip=1 tokens=1,4-6" %%s in ("%COMPUTERNAME%raw.txt") do ( 
187.
	set "Zahl=%%s" 
188.
 	set /a "S1+=%%t" 
189.
	set /a "S2+=%%u" 
190.
 	set /a "S3+=%%v" 
191.
192.
 
193.
set /a IN=%S1% / 100 
194.
set /a OUT=%S2% / 100 
195.
 
196.
echo SHOP_%EPSONNAME% EINGANG:%IN% AUSGANG:%OUT% RECHNUNGSANZAHL:%S3%>%COMPUTERNAME%eod.txt 
197.
ping 127.0.0.1 
198.
 
199.
IF EXIST D:\Dropbox copy %COMPUTERNAME%eod.txt D:\Dropbox\%EPSONNAME%EOD...%eoddate%.txt 
200.
 
201.
move %COMPUTERNAME%eod.txt D:\V8\Global\%EPSONNAME%EOD...%eoddate%.txt
Bitte warten ..
Mitglied: dax4fun
17.02.2014, aktualisiert um 03:49 Uhr
@bastla hab alles eingefügt funktioniert super auch Storno

hab dann etliche FOR versuche probiert, an dieser Datei :

%COMPUTERNAME%eod.txt:
01.
SHOP_556001 EINGANG:208 AUSGANG:107 RECHNUNGSANZAHL:42 
02.
221: 4 
03.
441: 12 
04.
888: 9
damit ich alles in einer Zeile habe doch immer fehl ausgaben
einer der versuche...
01.
for /f "tokens=1,2 skip=1" %%o in ('%COMPUTERNAME%eod.txt') do echo %%o 
hab auch usebackq (tokens1-1, 1,2 , 2 ) verwendet wie in diesem funktionierendem Bsp. wo aus :
01.
Shop	Date	Game	TStakes	TReturns	TTickets	TChange	Open TStakes	Open TReturns	Open TTickets 
02.
555123 2014-02-16 Euros 5200 000 7 0 0 0 0 
03.
555123 2014-02-16 KM 15600 10760 35 0 0 0 0 
mit
01.
@echo off & setlocal 
02.
	set "S1=0" 
03.
	set "S2=0" 
04.
	set "S3=0" 
05.
 
06.
for /f "usebackq skip=1 tokens=1,4-6" %%s in ("%COMPUTERNAME%raw.txt") do ( 
07.
	set "Zahl=%%s" 
08.
 	set /a "S1+=%%t" 
09.
	set /a "S2+=%%u" 
10.
 	set /a "S3+=%%v" 
11.
)
das herauskam
01.
SHOP_556001 EINGANG:208 AUSGANG:107 RECHNUNGSANZAHL:42
aber es geht nicht??? jetzt kann ich nicht mal mehr was probieren ich glaub dem Rechner reichts auch schon, jetzt startet er die txt beim ausführen der Bat
Bitte warten ..
Mitglied: Endoro
17.02.2014 um 10:00 Uhr
Hey,
schreib einfach den Input und erwarteten Output auf.
Bitte warten ..
Mitglied: dax4fun
17.02.2014, aktualisiert um 17:49 Uhr
Hi @Endoro
Ich würde aus Bastla´s Batch die Ergebnisse, die aus der Schleife gewonnen werden als Variable brauchen
01.
set "Ordner=D:\ONL" 
02.
 
03.
set "Users=%temp%\Users.txt" 
04.
type nul>Users.txt 
05.
for %%i in ("%Ordner%\%GESTERN%\*.*") do findstr "%%~xi" "%Users%">nul||>>"%Users%" echo %%~xi 
06.
 
07.
set "Liste=%COMPUTERNAME%eod.txt" 
08.
rem del "%Liste%" 2>nul 
09.
for /f "delims=." %%i in ('sort "%Users%"') do for /f %%a in ('dir "%Ordner%\%GESTERN%\*.%%i"^|findstr "Datei(en)"') do call :ProcessUser %%i %%a 
10.
goto :eof 
11.
 
12.
:ProcessUser 
13.
set /a Anzahl=%2 
14.
for /f %%i in ('findstr /mi "Storno" "%Ordner%\%GESTERN%\*.%1"') do set /a Anzahl-=2 
15.
>>"%Liste%" echo %1: %Anzahl%
Bitte warten ..
Mitglied: Endoro
17.02.2014 um 18:09 Uhr
Zum Beispiel:

01.
for /f "usebackqtokens=1*delims=: " %%a in ("%Liste%") do set "user.%%~a=%%~b" 
02.
set "user."
Bitte warten ..
Mitglied: bastla
17.02.2014 um 19:04 Uhr
Hallo dax4fun!
Ich würde aus Bastla´s Batch die Ergebnisse, die aus der Schleife gewonnen werden als Variable brauchen
Wozu? Danach wäre doch vermutlich wieder eine Schleife fällig, um diese Variablen weiter zu verarbeiten ...

Grüße
bastla
Bitte warten ..
Mitglied: dax4fun
17.02.2014 um 20:16 Uhr
Hi, Endoro, bastla
Wenn ich die Variablen habe, kann ich die überall ausgeben, wie hier wo ich die User zur Abrechnung dazu hänge

Bsp.
echo SHOP_%SHOPNR% EINGANG:%IN% AUSGANG:%OUT% RECHNUNGSANZAHL:%S3% %USER1%:%Anzahl% %2:%Anzahl% %3:%Anzahl%>datei

bzw. muss ich bald auch ein xml mit diesen Daten füllen wo ich nicht mal die struktur kenn

Ich bin mir überhaupt nicht mehr sicher mit Batch und diesem Monsterskript da es immer eine Baustelle ist

Wie krieg ich das hin jedem token eigene Variable zuordnen
variable =0
und dann variable+1
oder ?

Danke
Bitte warten ..
Mitglied: dax4fun
18.02.2014, aktualisiert um 04:00 Uhr
Hi, hoffnungslos ich bin zu blöd

Lg Dax
Bitte warten ..
Mitglied: Endoro
18.02.2014 um 10:18 Uhr
Hi,

versuch es mal so:
01.
@echo off &setlocal 
02.
set "line=SHOP_%SHOPNR% EINGANG:%IN% AUSGANG:%OUT% RECHNUNGSANZAHL:%S3%" 
03.
for /f "usebackqtokens=1*delims=: " %%a in ("%Liste%") do call makeline:"%%~a" "%%~b" 
04.
rem more code here 
05.
echo(%line% 
06.
goto:eof 
07.
 
08.
:makeline 
09.
set "line=%line% %~1:%~2" 
10.
exit /b
Transponieren heisst das, imo.
Gruss.
Bitte warten ..
Mitglied: dax4fun
18.02.2014 um 12:11 Uhr
Hi , Endoro hab probiert dein Script dazu zu hängen es bewirkte nichts.... mit dem jetztigen code bekomme ich folgendes raus
01.
SHOP_556001 EINGANG:208 AUSGANG:107 RECHNUNGSANZAHL:42     
02.
221: 4 
03.
441: 12 
04.
888: 9 
05.
Das würde ja passen nur wenn die user (onl) halt nach der 42 eingefügt werden könnten so : 
06.
SHOP_556001 EINGANG:208 AUSGANG:107 RECHNUNGSANZAHL:42  onl221: 4 onl441: 12 onl888: 9
ich hab %ONL1% %ONL2% %ONL3% genommen wo ich erwarte das %ONL1%=221: 4.... rein kommt. da ich vorher nicht weiß welcher user vorhanden sein wird, muss ich ('dir "%Ordner%\%GESTERN%\*.%%i"^|findstr "Datei(en)"') verwenden um die user und die Anzahl der tickets die sie ausgestellt haben zu ermitteln. dazu komm noch wenn ein ticket storno enthällt soll es nicht mitgezählt werden do call :ProcessUser
erst dann hab ich die Daten zum vervollständigen der Line

oder liege ich falsch und ich weiß nicht was ich editieren muss um es mit deinem Script zu erledigen??? das ist der jetztige code
01.
echo SHOP_%EPSONNAME% EINGANG:%IN% AUSGANG:%OUT% RECHNUNGSANZAHL:%S3% %ONL1% %ONL2% %ONL3% %ONL4%>D:\V8\Global\%EPSONNAME%EOD...%GESTERN%.txt 
02.
 
03.
set "Ordner=D:\V8\ONL" 
04.
 
05.
set "Users=D:\V8\ONL\Users.txt" 
06.
type nul>Users.txt 
07.
for %%i in ("%Ordner%\%GESTERN%\*.*") do findstr "%%~xi" "%Users%">nul||>>"%Users%" echo %%~xi 
08.
 
09.
set "Liste=D:\V8\Global\%EPSONNAME%EOD...%GESTERN%.txt" 
10.
rem del "%Liste%" 2>nul 
11.
for /f "delims=." %%i in ('sort "%Users%"') do for /f %%a in ('dir "%Ordner%\%GESTERN%\*.%%i"^|findstr "Datei(en)"') do call :ProcessUser %%i %%a 
12.
goto :eof 
13.
 
14.
:ProcessUser 
15.
set /a Anzahl=%2 
16.
for /f %%i in ('findstr /mi "Storno" "%Ordner%\%GESTERN%\*.%1"') do set /a Anzahl-=2 
17.
>>"%Liste%" echo %1: %Anzahl%
Bitte warten ..
Mitglied: Endoro
18.02.2014 um 12:24 Uhr
Hey,
du könntest die Orders von einem Tag gepackt hochladen.
Gruss.
Bitte warten ..
Mitglied: dax4fun
18.02.2014, aktualisiert um 12:53 Uhr
Hi, danke für die Antwort

Die Ordner sind nach Datum sortiert und drinnen befinden sich nur txt dateien 897324987329842.txt mit dem inhalt : 123123123....1.....123

ich hab mir zum testen eine txt datei genommen paar mal kopiert und in eine habe ich storno reingeschrieben

da ich die 23423423432.txt mit dem usernamen rename, sind im Ordner danach 4342342342342.221 bzw hab ich auch 4342342342342.441 und 888 drinnen
damit trenne ich die dateien per user

697bb32fb9ba1fa4759e5b3fe3082fcf - Klicke auf das Bild, um es zu vergrößern
Danke
LG
Bitte warten ..
Mitglied: Endoro
LÖSUNG 18.02.2014, aktualisiert 19.02.2014
Ok, here we go:
01.
@ECHO OFF &SETLOCAL disableDelayedExpansion 
02.
SET "yesterday=20140218" 
03.
FOR %%a IN ("%yesterday%\*") DO ( 
04.
	SET /a bill%%~xa+=1 
05.
	SET /a billcount+=1 
06.
07.
FOR /f "delims=" %%a IN ('FINDSTR /mi "storno" "%yesterday%\*"') DO ( 
08.
	SET /a storno%%~xa+=1 
09.
	SET /a stornocount+=1 
10.
11.
SET "line=%yesterday:~6,2%.%yesterday:~4,2%.%yesterday:~0,4% Rechnungen: %billcount%, Storno: %stornocount%" 
12.
FOR /f "tokens=2*delims==." %%a IN ('SET bill.') DO ( 
13.
	IF DEFINED storno.%%a ( 
14.
		FOR /f %%c IN ('SET /a %%b-storno.%%a') DO CALL SET "line=%%line%%, %%a:%%c" 
15.
	) ELSE ( 
16.
		CALL SET "line=%%line%%, %%a:%%b" 
17.
18.
19.
ECHO(%line%
Gruss.
Bitte warten ..
Mitglied: dax4fun
19.02.2014, aktualisiert um 02:39 Uhr
Hi, es Fehlen mir die Worte, ich bin so Glücklich.... meine Augen sind voller Tränen

1000x Danke

Ein paar Sachen noch:

1.Habe SET /a billcount+=1 von 1 auf 2 gesetzt weil wenn eine Rechung storniert wird, darf nicht auch die eigentliche Rechnung mittgerechnet werden
Bsp. 5 Rech. - 1 StornoRech. = 3, nicht 4.
Dadurch wird die gesamt Rechnungszahl verdoppelt !!! für mich nicht so tragisch bekomme die Anzahl aus andere Quelle..
(ich hoffe nur das es nicht bei mehr oder weniger Storno Rechnungen irgendwie abweicht muss ich noch testen)

2.Ist es möglich irgendwie den Pfad anzupassen damit es auch aus einem anderen Ordner ausgeführt werden kann ???

3. Besonders Danke für Storno Gesamt das kann ich super weiter verwenden

Ich mach jetzt mal fröhlich weiter, und hoffe ich kann die Ausgabe wieder in Variablen packen, weil muss mir mal XML Anschauen wo ich die Daten wieder reinbringen muss, und Arbeite bzw. Lerne wieder zu Tageszeiten.

Danke
Bitte warten ..
Mitglied: Endoro
19.02.2014, aktualisiert um 19:14 Uhr
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.

01.
@ECHO OFF &SETLOCAL disableDelayedExpansion 
02.
CD /d "%UserProfile%\Rechnungen" 
03.
SET "yesterday=20140218" 
04.
FOR %%a IN ("%yesterday%\*") DO ( 
05.
	SET /a bill%%~xa+=1 
06.
	SET /a billcount+=1 
07.
08.
FOR /f "delims=" %%a IN ('FINDSTR /mi "storno" "%yesterday%\*"') DO ( 
09.
	SET /a storno%%~xa+=1 
10.
	SET /a stornocount+=1 
11.
	SET /a billcount-=1 
12.
13.
SET "line=%yesterday:~6,2%.%yesterday:~4,2%.%yesterday:~0,4% Rechnungen: %billcount%, Storno: %stornocount%" 
14.
FOR /f "tokens=2*delims==." %%a IN ('SET bill.') DO ( 
15.
	IF DEFINED storno.%%a ( 
16.
		FOR /f %%c IN ('SET /a %%b-storno.%%a') DO CALL SET "line=%%line%%, %%a:%%c" 
17.
	) ELSE ( 
18.
		CALL SET "line=%%line%%, %%a:%%b" 
19.
20.
21.
ECHO(%line%
Gruss.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Per Batch Dateien in einen Ordner - ext. Festplatte übertragen (2)

Frage von tocksick zum Thema Batch & Shell ...

Windows Server
gelöst Freigegebener Ordner "Eigene Dateien" (8)

Frage von JensDND zum Thema Windows Server ...

Windows 10
Löschen von Ordner mit Dateien (3)

Frage von jerry32 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...