manatwork 10 Geschrieben 3. März 2005 Melden Teilen Geschrieben 3. März 2005 Hallo, ich bitte um Hilfe.... Täglich sammeln sich *.sta Dateien verschiedener Anzahl in einem Verzeichnis. (Das sind Kontoauszüge die täglich reinkommen...mal 5 mal 8...) Mit einem Batchprogramm auf W98 möchte ich nun... Die letzten Datums also jüngsten *.sta Files finden und anschliessend den inhalt der gefundenen Dateien in "eine" Datei namens MT940 kopieren. Am Montag sollte er mir die von Freitag finden. ich hab versucht..und versucht....und......bin zu dumm.... Viele Dank für Eure Hilfe! Gruss Zitieren Link zu diesem Kommentar
Finanzamt 76 Geschrieben 3. März 2005 Melden Teilen Geschrieben 3. März 2005 Hi! Schau mal hier nach: http://www.mcseboard.de/showthread.php?t=56553 , da hatte wer eine ähnliche Frage. Ob Du nun löscht (wie in dem Thread) oder packts, kopierst etc. ist ja egal. Gegrüßt! Zitieren Link zu diesem Kommentar
manatwork 10 Geschrieben 3. März 2005 Autor Melden Teilen Geschrieben 3. März 2005 geht so leider nicht! da ich am Montag die Files von Freitag benötige, kann ich nicht pauschal 1 oder 5 Tage setzen. bzw. Feiertag dazwischen.. Danke! Zitieren Link zu diesem Kommentar
Finanzamt 76 Geschrieben 3. März 2005 Melden Teilen Geschrieben 3. März 2005 Hallo! Dein Problem ist also, daß Du nicht definitiv sagen kannst: die von gestern, vorgestern etc. Konsequent zuende gedacht kommen ja nicht nur Wochenenden, sondern auch die ganzen beweglichen und regionalen Feiertage, Streiktage etc. dazu. Das sind zu viele Unbekannte, als daß Du daraus ein Programm stricken könntest. Aber Du weißt ja, was Sache ist (bzw. ein User). Dann sollte eine Batch helfen, die mit einem Parameter gestartet werden muß. Z.B. SammelUndKopier 1 , 2, 3 etc. Und in der Batch verzweigst Du halt bei 1,2,3,4 etc. entsprechend. Alternativ schreibst Du Dir mehrere Batche, die bis auf das "Arbeitsdatum" identisch sind. Gegrüßt! Zitieren Link zu diesem Kommentar
maneich 10 Geschrieben 4. März 2005 Melden Teilen Geschrieben 4. März 2005 Hallo, so wie ich das sehe, willst Du immer die Dateien mit dem vorletzten Datum ermitteln und kopieren. Für Win9X Systeme ist das nicht ganz so einfach, eine .vbs-Datei würde das hier vereinfachen. Habe es aber denoch mit einer Batch + 2 Zusatztools (Batch + Com) gemacht. [Deine Batch] (erste Batch) ------------------ab hier @echo off cls rem aktuelles Datum call datex a 1 rem alle Dateien vor den aktuellen Datum dir /od *.sta|find /v "%a%">loe.txt rem Dateien mit vorletztem Datum ermitteln type setword 4 >tmp.bat call tmp a rem alle dateien mit vorletztem Datum speichern type loe.txt|find "%a%">loe.txt :zs1 rem Aufruf einzelner Dateien type loe.txt|setword 6>tmp.bat call tmp a rem wenn .txt-Datei leer Ende if %a%'==' goto end rem erste Zeile der .txt-Datei wird entfernt type loe.txt|find v "%a%">loe.txt type %a%>>xy.txt goto zs1 :end set a= cls ------------------bis hier Für das aktuelle Datum sofern benötigt; bietet mehrere Möglichkeiten) Datex.bat -------------------------ab hier @echo off cls rem Erläuterungen siehe am Ende rem oder nur einfach datex1 eingeben for %%e in (loop loop2 loop3) do if %2'==%%e' goto %2 set a2=%1 set a3=%2 set a4=%3 set ~t=%TEMP%.\Tmp echo @Prompt For %%%%%%%%D In ($D) Do Call %0 : loop %%%%%%%%D>%~t%1.bat %COMSPEC% /C %~t%1.bat.>%~t%2.bat call %~t%2.bat call %~t%4 a1 Echo ; | Choice /S /C:;%a1%; %0 : loop2,>%~t%1.bat %~t%1.bat :loop Echo @Prompt Set %%%%1=_%3_ > %~t%3.bat %COMSPEC% /C %TEMP%.\Tmp3.bat > %~t%4.bat For %%C In (Call Goto:end) Do %%C %~t%4 :loop2 set a1=%0 for %%e in (x x1 x2) do set %%e= If %4'==_' Shift for %%e in (set shift) do %%e x=%x%%4 for %%e in (set shift) do %%e x=%x%%4 for %%e in (set shift) do %%e x=%x%%4 for %%e in (set shift) do %%e x1=%x1%%4 for %%e in (set shift) do %%e x1=%x1%%4 if %a3%'==1' for %%e in (shift shift shift goto:loop11) do %%e shift for %%C in (shift set) do %%C x2=%4 for %%C in (shift set) do %%C x2=%x2%%4 :loop11 for %%C in (shift set) Do %%C x2=%x2%%4 for %%C in (shift set) do %%C x2=%x2%%4 if not %a4%'==1' for %%e in (shift set goto:end1) do %%e x=%x%%x1%.%x2% echo %a1% : loop3 01;Januar;02;Februar;03;Maerz;04;April;05;Mai;06;Juni;07; Juli;08;August;09;September;10;Oktober;11;November;12;Dezember;%1>%~t%0.bat For %%C In (Call Goto:end) Do %%C %~t%0.bat :loop3 if %3==%x1% for %%e in (shift set goto:end1) do %%e x=%x%%4 %x2% for %%e in (shift shift goto:loop3) do %%e :end1 if not "%a2%"=="" goto end2 echo. echo Ermittelt nur das aktuelle Datum echo %%1 = Ausgabe-Variable fuer das Datum echo %%2 = Jahresangaben leer oder 0 wenn Jahr ist 4-stellig / 1 ist 2-stellig echo 0 nur angeben wenn %%3 aktiviert echo %%3 = Monat leer ist Zahl / 1 ist Text echo. echo Aktuelles Datum: %x% for %%e in (echo. pause goto:end3) do %%e :end2 set %a2%=%x% :end3 del %~t%?.bat>nul for %%e in (a2 a3 a4 a1 x x1 x2 ~t) do set %%e= :end cls -------------bis hier [.com-Datei - Setword.com] um in Win9X tokens (Wörter ) einer Zeile zu ermitteln. einfach in eine Textdatei (z.B Notepad) als setword.com Datei abspeichern [setword.com] -------------ab hier ¾ ¬< tûN+À*ÿ¹ ŠF€ë08Ës÷áØsíP¾¢+Û‰ò¹ ð´?Í!‹ØÆ ¹ º›» ´@Í!]…íuE+ɬ< tû<,t÷<;tó<=tï< të< tçN‰ò€<t FŠ< t<,t<;t<=t< t< uàA;Íu¿‹Î)Ñ´@Í!´>Í!¸ LÍ!set %1= ---------------bis hier müßte auf dieser Basis laufen; mußt das ganze aber noch auf Deine Bedürfnisse anpassen. MfG maneich Zitieren Link zu diesem Kommentar
manatwork 10 Geschrieben 4. März 2005 Autor Melden Teilen Geschrieben 4. März 2005 vielen Dank für Eure Mühe!!! kann ich nicht einfach per "input" befehl das Datum eingeben, von dem ich die Files haben will Gruss Zitieren Link zu diesem Kommentar
maneich 10 Geschrieben 4. März 2005 Melden Teilen Geschrieben 4. März 2005 Hallo, klar kannst Du das machen. Dafür kannst Du das kleine Programm setword.com auch nehmen mit setword>tmp.bat call tmp.bat a hast Du in %a% Deine Eingabe stehen. Mit echo.|date|setword>tmp.bat kannst du zwar auch das Datum ermitteln, das ist aber für Dein Problem nicht zu gebrauchen (liefert die Jahresangabe 4-stellig). Der dir-Befehl gibt aber das Jahr nur 2-stellig zurück, also mußt Du unbedingt das Jahr auch "2-stellig" angeben (tt.mm.yy). Der Suchbegriff wird sonst nicht gefunden. Danach suchst Du im Verzeichnis mit dir /od *.sta|find "%a%">loe.txt Dateien mit dem entsp. Datum und benötigst zur Bearbeitung dann nur noch :zs1 rem Dateinamen aus 1. Zeile lesen type loe.txt|setword 6>tmp.bat call tmp a rem wenn .txt-Datei leer Ende if %a%'==' goto end rem erste Zeile der .txt-Datei wird immer entfernt type loe.txt|find /v "%a%">loe.txt type %a%>>xy.txt bzw. copy %a% xy goto zs1 :end set a= cls MfG maneich Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.