Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

GELÖST

per Batch Datenbank Export weiter bearbeiten

Mitglied: Mikefield

Mikefield (Level 1) - Jetzt verbinden

21.04.2009, aktualisiert 21:55 Uhr, 4492 Aufrufe, 19 Kommentare

Habe einen Datenbank Export, von dem ich diverse Spalten und Zeilen mit einem bestimmten Wert benötige

Hallo!
Habe hier einen Datenbank Export von dem ich die Spalten "FIRSTNAME","LASTNAME","LOGINNAME", benötige.
Dieses aber nur wo in der Spalte "DELETEDFLAG", eine 0 steht. Habe schon verschiedenes versucht, komme aber nicht weiter.
Das Ergebnis soll in einer neuen Datei gespeichert werden, die Werte ohne Hochkommata und getrennt mit TAB.
Anbei ein Auszug aus dem Export:

01.
"FIRSTNAME","LASTNAME","MIDDLENAME","FULLNAME","LOGINNAME","DOMAIN","AGENTGROUP","MANAGER_NAME","PREFERREDNAME","TITLE","PASSWORD","PKEY","DISABLELOGINFLAG","HISTORY","EMPLOYEEID","LOCATION","ORGANIZATION_KEY","SOUNDEX","WEBPAGE","MANAGER_KEY","COMMUNICATEPREF","ELECTRONSIGNATURE","FULFILLMENTLIMIT","MANAGERFLAG","NOTES","VOICECONFIG","ROLE_ADMINISTRATOR","ROLE_SUPERVISOR","ROLE_AGENT","ROLE_CLERK","ROLE_POSTMASTER","ROLE_OPERATOR","DELETEDFLAG","AUTOAGENTFLAG","TASKLOAD","TASKCEILING","CHANGEPASSWORDFLAG","PREFIXNAME","SUFFIXNAME","SALUTATION","ROLE_SUPPORT","PHONE","EMAIL","SITE","DATECREATED","DATEMODIFIED","CANPANIC","DOAVAIL","DOWRAPUP","OFFLINEDELIVERY","SENIORITY","ADDRESSABLEFLAG","DISPLAYNAME","EXTERNALFLAG","ADVOCATEFLAG","OUTOFOFFICEFLAG","ROLE_CA_ADMIN","FAILEDLOGINCOUNT","LASTLOGINFAILDATE","LASTLOGINDATE","CHANGEPASSWORDDATE","SITE_KEY","LRMID_KEY","LINKGROUP_KEY","SERVERPROCESS_UUID", 
02.
"Adam","Admin","","Admin, Adam","Admin","User1","","","Adam  Admin","","E2:19b36c440d03c671d32ff6c23eb46251","100001","0","286","","","","A355A350","","","0","","0","","","{0,1,{"autoloadimp","true"}}","1","0","0","0","0","0","0","0","1","1","0","","","","0","","","","","21-Apr-2009 07:02:53 AM","Y","Y","Y","1","0","0","Admin, Adam","0","0","0","0","0","19-Apr-2009 07:31:00 PM","21-Apr-2009 07:02:53 AM","10-Sep-2008 12:00:00 AM","1","","","", 
03.
"website","server","","server, website","website","Website","","","website","","E2:49deb4c2879b7cbaaeb02927caed4590","100002","1","290","","","","S616W123","","","0","","0","","","","0","0","0","0","0","1","0","0","1","1","0","","","","0","","","","","20-Apr-2009 10:17:03 AM","Y","Y","Y","1","0","0","server, website","0","0","0","0","0","20-Apr-2009 10:17:03 AM","19-Apr-2009 07:03:24 PM","08-Dez-2008 12:00:00 AM","1","","","", 
04.
"icmbridge","server","","server, icmbridge","icmbridge","Web","","","icmbridge","","E2:fb45ccd74620fc0608766c49078c8b50","100003","0","289","","","","S616I251","","","0","","0","","","","0","0","0","0","0","1","0","0","1","1","0","","","","0","","","","","19-Apr-2009 07:00:49 PM","Y","Y","Y","1","0","0","server, icmbridge","0","0","0","0","0","","19-Apr-2009 07:00:49 PM","","1","","","", 
05.
"dcobridge1","server","","server, dcobridge1","dcobridge1","User1","","","dcobridge1","","E2:fe347ca98361b4b4515339595711fd8f","100005","0","","","","","S616D216","","","0","","0","","","","0","0","1","0","0","0","0","0","0","0","0","","","","0","","","","","29-Sep-2008 08:33:21 AM","Y","Y","Y","1","0","0","dcobridge1 server","0","0","0","0","3","29-Sep-2008 08:33:21 AM","","","1","","","", 
06.
"Hugo","Habicht","","Habicht, Hugo","ub2ch20","User1","","","Hugo","","E2:e10adc3949ba59abbe56e057f20f883e","100006","0","287","v900702","","","H123H200","","","","","","","","","0","0","1","0","0","0","0","0","1","1","0","","","","0","","","","","13-Sep-2007 08:30:24 PM","Y","Y","Y","1","0","0","Habicht, Hugo","0","0","0","0","0","19-Apr-2007 12:09:55 PM","13-Sep-2007 08:30:24 PM","05-Apr-2007 12:00:00 AM","1","","","", 
07.
 
Ich hoffe Ihr könnt mir helfen!

mf
Mitglied: bastla
21.04.2009 um 23:03 Uhr
Hallo Mikefield!

Für einen Batch sind die Daten etwas sehr unhandlich (zu viele Felder), daher eher ein VBScript:
01.
Ein = "D:\Exportdtatei.txt" 
02.
Aus = "D:\NeueDatei.txt" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
Daten = Split(fso.OpenTextFile(Ein).ReadAll, vbCrLf) 
06.
 
07.
Set A = fso.CreateTextFile(Aus) 
08.
For i = 0 To UBound(Daten) 
09.
    Satz = Split(Daten(i), """") 
10.
    If UBound(Satz) >= 65 Then : If Satz(65) = "0" Then A.WriteLine Satz(1) & vbTab & Satz(3) & vbTab & Satz(9) 
11.
Next 
12.
A.Close
[Edit] Art der Zerlegung geändert, da VBS auch unter Anführungszeichen stehende Kommata als Trennzeichen interpretiert; wegen der Doppelzählung der Anführungszeichen ist der Array-Index der Felder nach der Formel "Feldnummer * 2 - 1" zu ermitteln [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
21.04.2009 um 23:13 Uhr
Hallo MikeField,

Das geht zwar mit dem folgenden Batch, aber andere Sprachen/Tools gawk z.Bsp. sind besser geeignet.

Wenn du eine Erläuterung der Befehle brauchst, melden.

01.
::StripDeleted.cmd::::::::::::::::::::::::::::::::::::::::::::::::::: 
02.
@echo off 
03.
set DBEx=f:\test\2\DB-Export.csv 
04.
set /P Header=<%DBEx% 
05.
Call :Process %Header% 
06.
for /F "skip=1 delims=" %%A in (%DBEx%) do Call :Process %%A 
07.
goto :Eof 
08.
:Process 
09.
shift /3 
10.
shift /3 
11.
for /l %%B in (1 1 27) do shift /4 
12.
if %1 NEQ "FIRSTNAME" IF %4 NEQ "0" goto :EOF 
13.
echo %~1	%~2	%~3	%~4
Ich weiß nicht ob die TAB Zeichen in der letzten Zeile den Transportweg überstehen, sonst musst du sie in deinem Editor erneuern.
Wenn die Ausgabe ok erscheint kannst du in der letzten Zeile noch eine Umleitung anhängen >>Ausgabe.txt

Gruß
LotPings
Bitte warten ..
Mitglied: 76109
22.04.2009 um 11:51 Uhr
Hallo Mikefield,

Meine Frage wäre, ob Du den Datenbank-Export selber erstellst und ob es sich um eine Access-Datenbank-Datei handelt?
Wenn ja, wird die Datenbank ständig neu überschrieben oder nur geändert und hat sie ein Passwort, das Dir bekannt ist?

Gruß Dieter
Bitte warten ..
Mitglied: Mikefield
22.04.2009 um 16:35 Uhr
So, erst einmal Danke an alle! Die Verarbeitung funktioniert tadellos!
Habe auch schon ein wenig drum herum gebaut, wie Lastname zuerst und die Sortierung danach.

@bastla, da ich das Ergebnis noch ein wenig "tunen" möchte, hilft mir VBS nicht wirklich weiter, da ich da gar nichts mehr verstehe. Trotzdem vielen Dank!

@76109: Es ist eine Oracle Datenbank und den Export mache ich manuell. Sie wird IMHO nur geändert und nicht überschrieben.

@LotPings: Es ist ein wenig ungewöhnlich was Du da erstellt hast, und ich verstehe es nicht wirklich. Kannst Du die Zeilen mal kommentieren? Was mich wundert, ist, daß dieser :Process doppelt aufgerufen wird. Einmal nach dem set /p und dann noch einmal in der For /F Schleife. Was wird mit dem set /p eigentlich wirklich bezweckt?

Was wird mit 2x shift /3 geschoben? Hätte das nicht auch ein shift /6 gemacht? Ahh, habe mal shift /? gemacht. Kann es sein, das Du damit "Middlename und "Fullname" verschiebst um dann als %3 den "Loginname" zu erhalten? Und dann mit for /l und shift /4 den "DELETEDFLAG" als %4 erhalten?
Aber was macht dann noch die for /f Schleife?

mf
Bitte warten ..
Mitglied: bastla
22.04.2009 um 17:03 Uhr
Hallo Mikefield!

Wenn schon das VBS-Script nicht helfen konnte, vielleicht ein anderer Beitrag meinerseits ...

Was mich wundert, ist, daß dieser :Process doppelt aufgerufen wird. Einmal nach dem set /p und dann noch einmal in der For /F Schleife. Was wird mit dem set /p eigentlich wirklich bezweckt?
Damit wird die erste Zeile (Kopfzeile mit Spaltenüberschriften) in die Variable %Header% eingelesen - da diese Zeile anders als die folgenden Datensätze behandelt werden muss, wird vorweg das Unterprogramm ":Process" aufgerufen und dort mit dem Vergleich von %1 auf "FIRSTNAME" eine "Spezialbehandlung" dafür vorgenommen.
Kann es sein, das Du damit "Middlename und "Fullname" verschiebst um dann als %3 den "Loginname" zu erhalten?
Das ist das Ziel der Aktion (BTW @LotPings: sehr elegant ) - "geschoben" wird allerdings der "Loginname" (nämlich nach vorne).
Aber was macht dann noch die for /f Schleife?
Die Schleife in Zeile 6 liest alle Datensätze (ab Zeile 2, daher "skip=1" - die Feldnamen aus Zeile 1 sind ja schon erledigt) aus und übergibt sie einzeln an das Unterprogramm.

HTH
bastla
[Edit] @LotPings: Sorry, hätte sehen sollen, dass Du ohnehin schon da bist ... [/Edit]
Bitte warten ..
Mitglied: 76109
22.04.2009 um 17:06 Uhr
Hallo Mikefield,

tja, von Oracle habe ich leider keine Ahnung.

In Access hätte man eine Abrage erstellen können, die genau das exportiert, was von Dir benötigt wird.


Gruß Dieter
Bitte warten ..
Mitglied: LotPings
22.04.2009 um 17:07 Uhr
Zitat von Mikefield:
@LotPings: Es ist ein wenig ungewöhnlich was Du da erstellt hast, und ich verstehe es nicht wirklich. Kannst Du die Zeilen mal kommentieren?
Gerne
Was mich wundert, ist, das dieser :Process doppelt aufgerufen wird. Einmal nach dem set /p und dann noch einmal in der For /F Schleife.
Ich hatte zuerst vor den Header separat zu behandeln, was sich aber während des Schreibens als nicht notwendig erwies.
Zeile 4 und 5 können ersatzlos gestrichen werden. (Dafür muss skip=1 aus dem for /f Befehl entfernt werden)

Was wird mit dem set /p eigentlich wirklich bezweckt?
Siehe set /? Als Microsoft den Choice Befehl wegließ haben sie das als Ersatz geschaffen. Eine Eingabemöglichkeit in Batchdateien. Wenn man die Eingabeumleitung benutzt um eine Variable aus einer Datei zu füllen wird nur die erste Zeile gelesen und der Rest verworfen.

Was wird mit 2x shift /3 geschoben? Hätte das nicht auch ein shift /6 gemacht? Ahh, habe mal shift /? gemacht. Kann es sein, das Du damit "Middlename und "Fullname" verschiebst um dann als %3 den "Loginname" zu erhalten?
Exakt Shift /3 heißt ja nicht 3 mal shift sondern an dritter Stelle shiften.

Und dann mit for /l und shift /4 den "DELETEDFLAG" als %4 erhalten?
Ja

Aber was macht dann noch die for /f Schleife?
Die liest Zeilenweise die Eingabedatei in %%A (mit allen Anführungszeichen und Kommata) Lies hierzu mindestens 3 mal die Ausgabe von for /? genau durch
Die Subroutine trennt die übergebenen Argumente an den Kommata auf in %1..%9 um Zugriff auf weitere Argumente zu bekommen muss man sowieso shiften, kann das aber eben auch weiter hinten machen.

Hier nochmal eine gekürzte Version:
01.
::StripDeleted.cmd::::::::::::::::::::::::::::::::::::::::::::::::::: 
02.
@echo off 
03.
set DBEx=f:\test\2\DB-Export.csv 
04.
for /F "delims=" %%A in (%DBEx%) do Call :Process %%A 
05.
goto :Eof 
06.
:Process 
07.
shift /3 
08.
shift /3 
09.
for /l %%B in (1 1 27) do shift /4 
10.
if %1 NEQ "FIRSTNAME" IF %4 NEQ "0" goto :EOF 
11.
echo %~1	%~2	%~3
Gruß
LotPings
Bitte warten ..
Mitglied: LotPings
22.04.2009 um 17:21 Uhr
Zitat von bastla:
Das ist das Ziel der Aktion (BTW @LotPings: sehr elegant ) - "geschoben" wird allerdings der "Loginname"
So ein Lob von einem Senior Admin [rot-werd]

[Edit] @LotPings: Sorry, hätte sehen sollen, dass Du ohnehin schon da bist ... [/Edit]
Keine Ursache.

Gruß
LotPings

PS: Welche Emoticons werden von der Forumsoftware eigentlich in Grafiken umgesetzt?
Bitte warten ..
Mitglied: bastla
22.04.2009 um 17:30 Uhr
Hallo LotPings!
So ein Lob von einem Senior Admin [rot-werd]
Ach, lass mal stecken (und "Senior Admin" ist eine reine "Alterserscheinung" ) ...

Das "Lob" ist allerdings sehr ernst gemeint - Deine Lösungen gefallen mir sehr gut und stellen eine Bereicherung für das Forum dar.

Welche Emoticons werden von der Forumsoftware eigentlich in Grafiken umgesetzt?
http://www.administrator.de/index.php?faq=34

Grüße
bastla
Bitte warten ..
Mitglied: Mikefield
22.04.2009 um 19:36 Uhr
Ok, hab alles verstanden und ist auch garnicht so schwer - hinterher.

Ich habe in die Batch noch etwas Kosmetik eingebaut, zu der ich noch eine Frage habe:
Der Export liegt irgendwo im Netz und die Ausführung dauert sehr lange. Habe noch in Zeile 16 eine Prozessbar eingebaut, die aber etwas zu oft anspringt, nämlich pro Zeile, was bei knapp 1000 Zeilen etwas zu viel ist. Kann ich das jetzt so ändern, daß diese nur bei jeder 10. Zeile reagiert? Mir schwebt da was mit set Counter= usw. vor, aber gibts da nicht was eleganteres mit einer zusätzlichen for Schleife? Ein Schrittwert von -10 geht ja leider nicht.

01.
@echo off & setlocal  
02.
 
03.
:Global 
04.
set "Day=%date:~0,2%" 
05.
set "Mon=%date:~3,2%" 
06.
set "Year=%date:~6,4%" 
07.
set "Datum=%Year%%Mon%%Day% 
08.
Set "DBEx1=repemp.csv" 
09.
set "DBEx2=AIC_Export_%Datum%.xls" 
10.
If Exist %DBEx2% del %DBEx2% 
11.
 
12.
:ProcessCall 
13.
Echo Info: Erzeuge  %DBEx2% 
14.
for /F "usebackq delims=" %%A in (%DBEx1%) do ( 
15.
  call :ProcessLine1 %%A 
16.
  for /L %%p IN (1,1,1) DO ((SET /P p= .) < NUL) 
17.
18.
Echo. 
19.
Goto Sort 
20.
 
21.
:ProcessLine1 
22.
shift /3 
23.
shift /3 
24.
for /l %%B in (1 1 27) do shift /4 
25.
if %1 NEQ "FIRSTNAME" IF %4 NEQ "0" goto :EOF 
26.
echo %~2	%~1	%~3 >> %DBEx2% 
27.
goto :EOF 
28.
 
29.
:Sort 
30.
Echo Info: Sortiere %DBEx2% 
31.
sort "%DBEx2%" /o "%DBEx2%" 
32.
goto :EOF 
33.
 
mf
Bitte warten ..
Mitglied: bastla
22.04.2009 um 19:54 Uhr
Hallo Mikefield!

Ich würd's auch mit einem Zähler (und Verwendung selbiger als Schalter - erspart "delayedexpansion") machen:
01.
@echo off & setlocal  
02.
 
03.
:Global 
04.
set "Day=%date:~0,2%" 
05.
set "Mon=%date:~3,2%" 
06.
set "Year=%date:~6,4%" 
07.
set "Datum=%Year%%Mon%%Day% 
08.
Set "DBEx1=repemp.csv" 
09.
set "DBEx2=AIC_Export_%Datum%.xls" 
10.
If Exist %DBEx2% del %DBEx2% 
11.
set counter=0 
12.
 
13.
:ProcessCall 
14.
Echo Info: Erzeuge  %DBEx2% 
15.
for /F "usebackq delims=" %%A in (%DBEx1%) do ( 
16.
  call :ProcessLine1 %%A 
17.
  if not defined counter set /p p=.<nul 
18.
19.
Echo. 
20.
Goto Sort 
21.
 
22.
:ProcessLine1 
23.
shift /3 
24.
shift /3 
25.
for /l %%B in (1 1 27) do shift /4 
26.
if %1 NEQ "FIRSTNAME" IF %4 NEQ "0" goto :EOF 
27.
echo %~2	%~1	%~3 >> %DBEx2% 
28.
 
29.
set /a counter+=1 
30.
if %counter%==10 set "counter=" 
31.
goto :EOF 
32.
 
33.
:Sort 
34.
Echo Info: Sortiere %DBEx2% 
35.
sort "%DBEx2%" /o "%DBEx2%" 
36.
goto :EOF
Grüße
bastla
Bitte warten ..
Mitglied: LotPings
22.04.2009 um 20:17 Uhr
Counter geht, aber besser in in die Subroutine packen.

Die ganze shifterei ist zwar elegant aber nicht sehr effizient.
Pro Zeile werden ja sehr viele Felder eliminiert.

Der Sort Teil kann eigentlich ohne Springen direkt unter die for Schleife.

Der set /A Befehl kann auch, was nicht (gut) dokumentiert ist, mehrere math. Operationen in einem Rutsch ausführen - wenn in Anführungszeichen gesetzt auch ohne Variablen in störende Prozentzeichen zu packen.

01.
@echo off & setlocal  
02.
:Global 
03.
set "Day=%date:~0,2%" 
04.
set "Mon=%date:~3,2%" 
05.
set "Year=%date:~6,4%" 
06.
set "Datum=%Year%%Mon%%Day% 
07.
Set "DBEx1=repemp.csv" 
08.
set "DBEx2=AIC_Export_%Datum%.xls" 
09.
If Exist %DBEx2% del %DBEx2% 
10.
 
11.
Echo Info: Erzeuge  %DBEx2% 
12.
for /F "usebackq delims=" %%A in (%DBEx1%) do call :Process %%A 
13.
 
14.
Echo. 
15.
Echo %cnt% Zeilen verarbeitet, davon %cntvalid% Valide 
16.
Echo Info: Sortiere %DBEx2% 
17.
sort "%DBEx2%" /o "%DBEx2%" 
18.
goto :EOF 
19.
 
20.
:Process 
21.
set /A "cnt+=1,Rest=cnt %% 10"&if %Rest%. EQU 0. set /P X=.<NUL 
22.
shift /3 
23.
shift /3 
24.
for /l %%B in (1 1 27) do shift /4 
25.
if %1 NEQ "FIRSTNAME" IF %4 NEQ "0" goto :EOF 
26.
echo %~2	%~1	%~3 >> %DBEx2% 
27.
set /A "cntvalid+=1
Bitte warten ..
Mitglied: bastla
22.04.2009 um 20:28 Uhr
@LotPings
Der set /A Befehl kann auch, was nicht (gut) dokumentiert ist, mehrere math. Operationen in einem Rutsch ausführen - wenn in Anführungszeichen gesetzt auch ohne Variablen in störende Prozentzeichen zu packen.
... wobei (was eigentlich gar nicht dokumentiert ist ) noch nicht einmal die Anführungszeichen erforderlich sind (und auch die Leerzeichen vor und nach dem Modulo-Operator %% brauchts nicht).
Worin siehst Du übrigens den Vorteil von
%Rest%. EQU 0.
gegenüber
%Rest%==0
Grüße
bastla
Bitte warten ..
Mitglied: LotPings
22.04.2009 um 21:07 Uhr
Zitat von bastla:
... wobei (was eigentlich gar nicht dokumentiert ist ) noch nicht einmal die Anführungszeichen erforderlich sind (und auch die Leerzeichen vor und nach dem Modulo-Operator %% brauchts nicht).
Stimmt wohl, aber da ich öfter mit den binären shift Operatoren >> und << gearbeitet habe, die die Anführungszeichen haben müssen, habe ich es mir angewöhnt.

Worin siehst Du übrigens den Vorteil von
%Rest%. EQU 0. 
> 
gegenüber
%Rest%==0 
> 
Ebenfalls reine Angewohnheit/Vorliebe: Editoren mit Syntax-Highlighting heben IMO die alphabetischen Vergleichsoperatoren besser ab, der Punkt um möglichst niemals eine Variable, die leer sein könnte, allein stehen zu haben.

Gruß
LotPings
Bitte warten ..
Mitglied: Mikefield
22.04.2009 um 21:52 Uhr
Ihr mit Eurem Fachgesimpel, da soll noch einer mitkommen!
Freut mich, Euch in ein anregendes Gespräch verwickelt zu haben.

Aber könnt Ihr mir bitte diese set /a Zeile innerhalb der Kommata erklären? Kann man anstatt cnt+=1 auch cnt=+1 verwenden?
Also "cnt" und "Rest" sind in diesem Fall Variablen. Aber das Komma ist ohne Leerzeichen. Muß das so sein? Rest=cnt %% 50 was wird hier wie verarbeitet? Das folgende If vergleicht den "Rest" Parameter, aber wann wird der auf 0 (eigentlich 1) gesetzt?

mf
Bitte warten ..
Mitglied: LotPings
22.04.2009 um 22:06 Uhr
Zitat von Mikefield:
Ihr mit Eurem Fachgesimpel, da soll noch einer mitkommen!
Das kommt schon noch
Freut mich, Euch in ein anregendes Gespräch verwickelt zu haben.
Ich bin zwar erst seit einer Woche hier dabei; aber wir begegnen uns immer wieder

Aber könnt Ihr mir bitte diese set /a Zeile innerhalb der Kommata erklären? Kann man anstatt cnt+=1 auch cnt=+1 verwenden?
Das hat aber dann die normale Bedeutung eines Vorzeichens.

Also "cnt" und "Rest" sind in diesem Fall Variablen. Aber das Komma ist ohne Leerzeichen. Muß das so sein?
Das Komma trennt zwei unterschiedliche Berechnungen. Rechnen mit set /A ist immer Integer-Rechnen. Ein Dezimalkomma gibt es daher nicht.

Rest=cnt %% 50 was wird hier wie verarbeitet? Das folgende If vergleicht den "Rest" Parameter, aber wann wird der auf 0 (eigentlich 1) gesetzt?
Das ist die Modulo = Divisionsrest-Funktion

Immer wenn die Division durch 10 Rest 0 ergibt wird also ein Punkt ausgegeben.
Gruß
LotPings
Bitte warten ..
Mitglied: Mikefield
22.04.2009 um 22:14 Uhr
Ah ja, Super wie das so alles in Batch funktioniert!
Eins habe ich noch. Die Berechnung der Zeilen gibt folgendes aus:
1494 Zeilen verarbeitet, davon 1371 Valide
Aber es sind 944 zu 863 wo kommt die Fehlkalkulation zustande?

mf
Bitte warten ..
Mitglied: LotPings
22.04.2009 um 22:26 Uhr
Zitat von Mikefield:
Eins habe ich noch. Die Berechnung der Zeilen gibt folgendes aus: 1494 Zeilen verarbeitet, davon 1371 Valide
Aber es sind 944 zu 863 wo kommt die Fehlkalkulation zustande?

Die Variablen sind nicht initialisiert, setz mal testhalber
01.
set cnt=0 
02.
set cntvalid=0
Mit an den Anfang. Ansonsten sehe ich keine Fehler.
Bitte warten ..
Mitglied: Mikefield
22.04.2009 um 22:48 Uhr
Habe ich gerade gemacht, hatte die selbe Idee. Vorher aber mit Echo abgefragt: 551 und 508, jetzt klappt auch das!
Vielen Dank und angenehme Nachtruhe!

mf
Bitte warten ..
Ähnliche Inhalte
Datenbanken
Wie bearbeite ich eine SQL-Datenbank
Frage von KevinFreeDatenbanken3 Kommentare

Hallo, unser Softwarehersteller legt alle Stamm- und Buchhaltungsdaten in einer SQL-Datenbank ab. Um uns eine Erweiterung zu programmierne, verlangt ...

Batch & Shell
Batch Server Export
Frage von jochengBatch & Shell3 Kommentare

Hallo Leute Ich habe mir folgende batch angelegt nun bekomme ich 2 Dinge nicht hin. 1) Es sollen nur ...

Batch & Shell
Batch zum bearbeiten mehrerer CSV
Frage von Matzus87Batch & Shell3 Kommentare

Hallo Zusammen, ich bin neu hier und arbeite mich gerade in die Batch Programmierung ein. Ich sitze momentan an ...

Batch & Shell
Batch zum automatischen Bearbeiten eines Wertes
gelöst Frage von M-K-D-BBatch & Shell20 Kommentare

Hallo, ich versuche mich gerade daran, einen Wert in der Registry per Batch zu bearbeiten, komme aber nicht so ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...