Jump to content

Mit Batch Datum finden und Files Packen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar

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!

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...