5.2k Aufrufe
Gefragt in WindowsXP von romero Mitglied (323 Punkte)
Guten Tag liebe Forenleser.

Habe ein Porblem bzw. suche nach einer Lösung mittels einem Batch, und es soll wirklich ein Batch sein!!!

Und zwar geht das dadrum, das Daten aus einer Exceltabelle ausgelesen werden, verarbeitet und dann wieder ausgegeben werden.

Worum geht es:

I. Grundlegende Dinge, was der Batch beinhalten soll.

- zu einem soll im Batch der Typ genannt werden, welchen man nur einmal angibt, er aber das dann immer wieder verwendet. Also oben gibt man an, um welchen z.B. genaue Flugzeugtyp A330 (wobei z.B. die Flugzeugtypen A330, A333, A332 ,A340 alle unter A340 laufen -> Übergeordnete Flugzeugtyp)
- weiterhin die Sektionen, wo es hinkommt, z.B. Sektion13-14 (wobei nur die Zahlen wichtig sind)
- zum anderen, welchen neuen Bereich er anlegen soll, z.B. CC104


Diese sollten sozusagen als Kopf verändert werden können.


II. Danach soll der Batch diese Daten aus einer Excel-Tabelle auslesen.

- die Tabelle liegt z.B. auf G:\Tabelle\übergeordneter Flugzeug\... und da entweder unter Sektion13-14 oder einem anderen (der Pfad sollte veränderbar sein).
- da soll er dann das Tabellenblatt mit dem oben angegeben Bereich suchen und die Daten ab der 8. Zeile und der 1. Spalte auslesen.
- die Tabelle starten mit einer ITEM-Nr., einer Anzahl und einer Nummer. Diese sollten verarbeitet werden.
- so eine ITEM-Nr. besteht immer aus 3 Zahlen, z.B 732, die Anzahl ist unterschiedlich, z.B. 2 und die Nummer des Werkstückes lautet z.B.: F258-71732-008-00

Das sind die grundlegenden Eigenschaften der Tabelle, welche für später benötigt werden.


III. Als nächstes sollen diese Daten verarbeitet werden und aus einem anderen Ordner ausgelesen werden.

- die Werkstücksnummer muss dann soll aussehen, dass aus der "alten" eine "neue" entsteht, also: aus F258-71732-008-00 -> F258_71732_008 (die Endung sollte alle Endungen beinhalten, also ein "*" an der Stelle).
- danach sollte in dem Ordner gegangen werden, wo diese Daten, welche ausgelesen werden sollen, drinstehen, z.B. O:\Werkstücke\A340 (da wieder dieser Flugzeugtyp) \...
- dort sollen alle diese Werkstücke ausgelesen werden, welche z.B. mit F258_71732_008 beginnen. Da aber in diesem Ordner auch ältere Versionen liegen, brauche ich da nur die neusten. Diese werden mit dem Buchstaben gekennzeichnet, genannt ISSUE. Also von F258_71732_008 auf F258_71732_008D.* -> das "D" ist der Issue bzw. die Version (weil da auch Werkstücke mit anderen Versionen vorhanden sind, z.B. "A", "B", ...) und das "*", die Endung. Aber: nach dem Buchstaben "Z", soll die Zählweise von "vorn" beginnen aber mit "AA". Der PC sortiert aber das "AA" zwischen "A" und "B", das sollte aber nach dem ISSUE "Z" kommen. Das unbedingt beachten.
- nachdem er die Daten gefunden hat, soll er alle Werkstücke, welche mit dieser Nummer vorhanden sind, ausgeben. D.h. es gibt als letzten Schritt die ganzen einzelnen Stücke zu suchen. Aus F258_71732_008D wird F258_71732_008D_20b.* & F258_71732_008D_10s.* & F258_71732_008D_10k.* & F258_71732_008D_11k.* & F258_71732_008D_12k.* -> diese letztgenannten Daten liegen in diesem großen Topf und werden benötigt. Dabei können auch andere Einzelteile liegen, wie z.B. mit _11s, _10l, _10b, _11b, _22b, ... also mehrere verschiedene. Und da hinter soll dann die Anzahl der Werkstücke stehen, also z.B. 2mal: F258_71732_008D_20b_2.*
- sollte da mal ein Einzelstück nicht vorhanden sein, soll er am Ende der Suche, eine Fehlermeldung bringen, dass bestimmte Teile noch fehlen.
- diese soll er in eine *.txt ausgeben, welche sich wie folgt zusammen setzt: STL_"oben angebene Flugzeugtyp"_"Bereich".txt in den Ordner z.B. H:\Teile\STLs\"übergeordneter Flugzeugtyp"\

Nachdem er dies gemacht hat ist er mit diesem Teil fertig. Die STL ist geschrieben und kann verwendet werden.


IV. ITEM suchen und kopieren

- als nächstes soll er auf D:\"oben genannter Flugzeugtyp"\ ein Bereich anlegen (wie oben angegeben)
- dort soll er die ITEMs reinkopieren, welche benötigt werden. Also aus diesem Flugzeugtyp rauskopieren und da einfügen -> Daten wurden aus der Exceltabelle entnommen
- die Werkstücksnummer sieht da wie folgt aus: F258_71732_008D_0732.txt oder wenn mehr als 2mal vorkommen sollte dann: F258_71732_008D_0732_2_2.txt (bei speziellen Anzahlen muss dies per Hand gehen, da es jetzt zu schwierig zu beschreiben ist bzw. die Überprüfung erfolgt dann noch "per Hand")
- auch da soll es eine Fehlermeldung geben wenn diese nicht vorhanden ist. Aber er soll diese dann selber erstellen, wie gerade beschrieben: F258_71732_008D -> "Sektion"_F258_71732_008D_0"ITEM"_"Anzahl"_"Anzahl".txt

So das wars erstmal von meiner Seite. Ich hoffe, ich hab das Probelm ordentlich beschrieben und ihr könnt damit was anfangen. Wenn ihr Fragen habt oder nicht genau wisst was zu machen ist, mich bitte Fragen.

ihc hoffe einer von euch kann mir helfen. Ich weiß, das es sowas gibt, denn ich habe sowas selber schonmal auf meiner Arbeit benutzt. Zwar nicht so in der Art aber halt ähnlich.

Also hoffe auf einen Profi, welcher mir dabei helfen kann.

LG Romero

16 Antworten

0 Punkte
Beantwortet von
hi,

das ist schon keine einfache Batch mehr, sondern eine umfangreiche Programmierung wird hier notwendig. Das kostet richtig viel Zeit und damit auch Geld. Privat macht dir das keiner mal schnell so nebenbei.
Du hast also aus dieser Sicht 2 Möglichkeiten.

1. selbst programmieren und bei Problemen hier nachfragen oder

2. deine Wünsche einem Programierer vortragen und einen Preis aushandeln.

ich wünsche dir viel Erfolg bei deinem Unterfangen.

pitchblack
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
Ok, dann lassen wir mal den 1. und 4. Schritt weg, weil das ist dann eher zusätzlich.

Mir geht es hauptsächlich darum, dass er Daten aus einem Excel-Tabellenblatt ausliest und diese dann verarbeitet, halt aber nach dem höchsten Issue bzw. Version. Das sortieren kann ich auch per Hand machen.

Habe das bisher schon so geschrieben, dass er auf den Ordner zu greift und dann mit "dir /B F258_... F258_..., (die Daten welche ich per Hand aus der Excel-Tabelle ausgelesen und selber umbenannt und bearbeitet habe) > STL_A340_CC104" eine TXT erstellt. Das sortieren musste ich ebenfalls per Hand machen.

Dazu brauche ich Hilfe, dass er das wie gesagt, ausliest, sucht und in eine TXT schreibt...

Kann man das ganze mit dem Sortieren des höchsten Issue auch mit IF schreiben, also wenn bei der Nummer an der Stelle x "A" auftritt dann soll er das in eine TXT schreiben, wenn es aber ne "B" gibt, dann nur das mit der "B". Wenn das geht, kann mir da einer helfen wie ich es schreiben soll?

Mir ist das ganze vorher per Hand schreiben einfach zu umständlich, obwohl es das normale Suchen schon sehr vereinfacht.

LG Romero
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
Noch was. Kann man sowas oben benennen, also das man oben festlegt, was fürn Typ es ist???

Geht das überhaupt? Bzw. wo finde ich allgemein die ganzen Befehle zu einem Batch? Mit "Help" in der Eingabeaufforderung komm ich da nicht so recht weiter...
0 Punkte
Beantwortet von mikoop Experte (2.7k Punkte)
Hallo

Alles über bat

Gruss, Mikoop
0 Punkte
Beantwortet von joshuan Mitglied (545 Punkte)
Hm. Also ich bin kein Profi. Aber wenn du mal gaaaanz genau sagen tust was er aus Exel holen soll und wie er das in eine Text reinschreiben soll. Vielleicht kann ich dir dann ein Code da dafür geben.
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
Also er soll in erster Linie ab der 8. Zeile die 3. Spalte auslesen...
Also den Inhalt was da geschrieben steht.
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
PS: Das erste mit der Zuweisung hab ich bereits rausgefunden, also (für mich n wichtiger Schritt :D) mit SET kann ich den Typ, Bereiche, ... festlegen und sie dann mit %Typ%, ... anwenden...

Oder wird es dabei Probleme geben???
0 Punkte
Beantwortet von joshuan Mitglied (545 Punkte)
Also er soll in erster Linie ab der 8. Zeile die 3. Spalte auslesen...
Also den Inhalt was da geschrieben steht.

Ok und es tut da nur eine Tabelle geben in der Mappe?
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
ne sind mehrere Tabellenblätter

aber noch ne andere Frage: will "ihm" klar machen, dass wenn der die Datei Doppelbuchstaben hat, dann soll er an der Stelle x weitermachen, ansonsten an der Stelle y.

Habe sowas bereits geschrieben: IF %bereich%==JJ* echo das hat geklappt (bzw. GOTO ...) aber das macht er nicht. Es klappt da nur, wenn ich komplett JJ043 schreibe... das versteh ich grad nicht.
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
mehrere Tab.blätter mit jeweils einer langen oder mal kürzeren Tabelle
...