Jump to content

maneich

Members
  • Gesamte Inhalte

    34
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von maneich

  1. 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

  2. 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

  3. Hallo,

     

    das sind Erfahrungswerte. Vielleicht habe ich darüber auch irgendwann einmal darüber gelesen, weiß ich aber nicht mehr.

     

    Wenn Du z.B. den xcopy-Befehl einsetzt um ein Verzeichnis mit 1000 Dateien zu kopieren, sammelt xcopy erstmal die Informationen über die zu kopierenden Dateien und arbeitet dies danach ab. Wenn das zu viele Informationen für ihn sind oder der Zwischenspweicherplatz nicht ausreicht, geht xcopy in die Kniee.

     

    Wenn du z.B. mit

     

    for /f "tokens=*" %%e in ('dir /b Verzeichnis\*.*') do xcopy verzeichnis\%%e

     

    arbeitest, wird der dir-Befehl Zeile für Zeile abgearbeitet, d.h. also es werden die Dateien in diesem Verzeichnis einfach hintereinander kopiert.

     

    MfG maneich

  4. Hallo,

     

    eine Batch ist ja normalerweise ein Stapelverarbeitungsscript. Alle Zeilen werden hintereinander abgearbeitet.

     

    Fremdprogramme werden gestartet und damit ist diese Zeile in der das Programm aufgerufen wird für die Batch normalerweise erledigt.

     

    Nun gibt es unter Windows das Programm "Start" mit dem man Befehle bzw. Programme unter bestimmten Bedingungen starten lassen kann. In der Eingabeaufforderung mal eingeben Start /? da wird alles erläutert.

     

    Soweit ein Fremdprogramm das akzeptiert kann man mit Start /min dieses Programm minimiert starten und mit Start /d auch ohne Fenster starten. Einen Parameter um ein Programm nicht vorzeitig beenden zu können gibt es nicht, es sei denn dieses Programm selbst bietet so etwas an.

     

    Außerdem kann man über den Taskmanager jederzeit Programme beenden, sofern man die Berechtigung dazu hat.

     

    Bliebe also nur die Möglichkeit für den Zeitraum in der das Programm läuft die Berechtigung neu zu setzen bzw. alle Berechtigungen zu sperren.

     

    MfG maneich

×
×
  • Neu erstellen...