WinFuture-Forum.de: Batch: Löschen von Dateien nach PC-Datums-Überschreitung - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batch: Löschen von Dateien nach PC-Datums-Überschreitung als simple Batch-Programmierung gesucht


#1 Mitglied ist offline   Carmen 15 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 27. April 19
  • Reputation: 0

geschrieben 27. April 2019 - 23:45

Hallo

Ich suche eine Möglichkeit, ein Programm nach Zeitablauf löschen zu können.

Der Script soll also das von mir jeweils eingestellte Datum im Script mit dem Datum im PC vergleichen und entweder die Startdatei meines Programms, also eine andere EXE ausführen oder eben dieses Programm oder Teile des Verzeichnisses oder Dateien daraus oder alles daraus nicht mehr starten sondern löschen.

Es muss alles so sein, dass ich das selbst in der BAT-Datei jeweils ändere und so jahrelang anpassen kann. Wenn man den Script verstanden hat, geht das ja.

Es muss auch so sein, das ganz gleich wo derjenige das Programm hinspielt, auf C, auf D oder in andere Unterverzeichnisse, nicht durch falsche Verzeichnisangaben der Script das Tool nicht findet.

Grüße

Es wird also der EXE des hauptprogramms diese BATCH davorgeschaltet, welche als EXE umgewandelt wird und so die Programmexe startet.


Gesuchte Problemlösung: Da wir in unserem Programm keine "Trial"-Begrenzung haben, wäre das auf die Weise nachzuholen, um zu langes nutzen zu vermeiden. Es ist ein einfaches Chatsystem, wo man leider unbequeme Fremde nicht blocken kann, sie sich also immer und jahrelang einbuchen können, wenn man sie einmal mit ins System der Gruppe hinzunimmt. So kann man ihnen erst mal einen Monat Testzeitraum geben und danach zerrinnt einfach der Account und alles ist erledigt. Allen anderen neuen gibt man später eine modernisiertere oder datumsverlängerte Version. Das ganze soll natürlich ohne angezeigte Fenster ablaufen.


Ich denke mal man braucht eine "Wenn/Dann" -verschaltung, wohl mit IF oder ELSE , START und DEL

https://de.wikibooks...g/_Druckversion

Vielleicht hat da jemand Ahnung.



######################

Meine ersten Versuche als reine Theorie: (aktualisiere ich)


REM Ist das Datum kleiner (LSS), damit jünger, bleibt noch Nutzungszeit, starten der EXE
REM Ist das Datum größer (GTR), damit älter, ist die Nutzungszeit überschritten und die Löschung soll passieren


REM Ist das Datum (des PC) kleiner (LSS) als das was hier voreingestellt ist, gehe zu „WAHR“
IF "%date%" LSS "11.11.2019" GOTO WAHR

REM hier landet man, wenn der if-Ausdruck nicht WAHR ist, also falsch ist
GOTO WEITER

:WAHR
REM hier landet man, wenn der if-Ausdruck wahr ist
REM Nach DEL muss das Verzeichnis oder die zu löschenden Dateien rein
DEL …
REM Jetzt wird der if Zweig verlassen
GOTO WEITER

:WEITER
REM hier soll wenn das Datum nicht überschritten ist, die normale Programmexe gestartet werden und somit nichts gelöscht werden

START (datei)


##################################################

Der erste Erfolg:

@ECHO off
REM Befehlszeilen durch „off“ unsichtbar machen, da sie sonst angezeigt werden


REM 6 „Zeichen“ weggelassen und dann 4 „Stellen“ zur Weiterverarbeitung ausgewählt = also 2019 =Jahr TT.MM.JJJJ
set DatumJ1=%date:~6,4%

REM 3 „Zeichen“ weggelassen und dann 2 „Stellen“ zur Weiterverarbeitung ausgewählt = also 04 =Monat TT.MM.JJJJ
set DatumM1=%date:~3,2%

REM 0 „Zeichen“ weggelassen und dann 2 „Stellen“ zur Weiterverarbeitung ausgewählt = also 28 =Tag TT.MM.JJJJ
set DatumT1=%date:~0,2%

REM Nun das Datum wird über die drei separat errechneten Stücken umgedreht angeordnet, dass es eine summerische Zahl wird, die man auch richtiger subtrahieren kann, wenn das Jahr vorn erscheint - das aktuelle PC-Datum erscheint, nur anders geschrieben
set Datum-PC=%DatumJ1%%DatumM1%%DatumT1%

REM Da ich deine Datei nicht habe, das 2. Datum per einfacher SET Zuweisung
set "Ablaufdatum=20190801"


REM Hiermit wird nun das errechnete Gebilde richtig zusammengefügt angezeigt
ECHO %Datum-PC%
ECHO %Ablaufdatum%

REM alles anhalten bis Tastendruck
PAUSE


Es erscheint

20190428
20190801


Angezeigt werden die beiden zahlen, die man nun vergleichen, verrechnen kann, womit man danach die anderen Aktionen per Zuweisung befehligt.




######################

Der Anreiz kam von dem WEB-Beispiel:

@echo off
IF "%date%" LSS "Bastie" GOTO WAHR
REM hier landet man wenn der if-Ausdruck falsch ist
GOTO WEITER
:WAHR
REM hier landet man wenn der if-Ausdruck wahr ist
echo Willkommen Zuhause
REM Jetzt wird der if Zweig verlassen
GOTO WEITER

:WEITER
echo.Have a nice Day!


###############################################

Hat jemand eine andere alternative Programmiersprache?
Die ich vor allem genau so einfach erzeugen und schreiben kann?

Dieser Beitrag wurde von Carmen 15 bearbeitet: 28. April 2019 - 16:03

0

Anzeige



#2 Mitglied ist offline   der dom 

  • Gruppe: aktive Mitglieder
  • Beiträge: 578
  • Beigetreten: 14. Juni 12
  • Reputation: 73
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Mein Haus, meine IT, Programmierung

geschrieben 01. Mai 2019 - 14:28

Liest sich nicht gerade seriös. Aber ok. Versuchs doch mal mit PowerShell - viel mächtiger, Einbindung von .NET Framework Assemblies, relativ einfache Syntax und definitiv aktueller.

Ich frage mich allen ernstes wie du es schaffen willst die EXE zu finden wenn du nicht entweder die Registry benutzt oder aber das Filesystem durchsuchst. Es gäbe ja noch die Möglichkeit den Pfad in einer Datei abzulegen die du festlegst und unter irgend einen der AppData Folders legst. Aber ohne genau zu wissen wie die Installationsroutine läuft oder es einfach nur ein ZIP Archive ist das du bereitstellst.....schwierig.
Mit allem, was du tust, machst du offenkundig, mit welcher Einstellung du durch's Leben gehst. -- Steffen Glückselig
0

#3 Mitglied ist offline   Candlebox 

  • Gruppe: aktive Mitglieder
  • Beiträge: 4.111
  • Beigetreten: 08. Juli 04
  • Reputation: 389
  • Geschlecht:Männlich

geschrieben 01. Mai 2019 - 18:01

Hmm, hab Da nur was total einfaches in vbs, um meine Aufnahmen in bestimmten, verschiedenen Ordnern nach xx Tagen automatisch löschen zu lassen, (das funktioniert sehr zuverlässig in der Aufgabenplanung), den Rest mache ich mit Benutzerrechten. Fremde Benutzer dürfen bei mir nicht wild rumverschieben. Die dürfen eigentlich gar nix außer Ihren Benutzerordner zumüllen.

Zitat

DIM fs,mFolder,f,fc,f1,checkpath,olderthan

'in diesem Ordner wird nach alten Files gesucht
checkpath = "E:\Captured Files\Tatort\"
'soviele Tage alt dürfen die Files sein
olderthan = 10


set FS = CreateObject("scripting.filesystemobject")
Set f = fs.GetFolder(checkpath)
Set fc = f.Files

For Each f1 in fc
filedate = cdate(left(f1.datelastmodified,10))
if filedate <= (date - olderthan) then
fs.DeleteFile f1
end if
Next

Dieser Beitrag wurde von Candlebox bearbeitet: 01. Mai 2019 - 18:06

»Man kann die Realität ignorieren, aber man kann nicht die Konsequenzen der ignorierten Realität ignorieren.« ~Ayn Rand
0

#4 Mitglied ist offline   Alfonsio 

  • Gruppe: Mitglieder
  • Beiträge: 1
  • Beigetreten: 02. Mai 19
  • Reputation: 0

geschrieben 02. Mai 2019 - 17:02

Machts doch nicht so kompliziert:


Zitat


@ECHO off
set DatumJ1=%date:~6,4%
set DatumM1=%date:~3,2%
set DatumT1=%date:~0,2%
set Datum-PC=%DatumJ1%%DatumM1%%DatumT1%

set "Ablaufdatum=20190901"

if %Datum-PC% GEQ %Ablaufdatum% goto loeschen
if %Datum-PC% LSS %Ablaufdatum% goto starten

:starten
START musterprogramm.exe /B
EXIT

:loeschen
DEL .\Musterordner\*.* /f /s /q

EXIT





Hier können die, die andere Programmiersprachen beherrschen, das gleiche mal in ihrer Sprache einfügen.
Da das Datum keine rechenbare Größe ist, wurde es kurzerhand gespiegelt, so dass es 2019 01 01 statt 01.01.2019 heißt denn dann kann man Ablaufdatum und eingestelltes datum rechnerisch funktionell so vergleichen, dass entweder ein "größer als" oder kleiner als" zur Antwort kommt und somit A oder B der nächste Weg ist, löschen oder starten. Eigentlich ganz einfache Logik.

Da wir aber keine anderen Sprachen kennen, also bitte mal spaßenshalber dies in andere Sprachen umübersetzen C++, Delphi, PowerShell usw. Übrigens laufen Trial-Versionen auch ncht anders, als dass dem Anwender einfach sein Weiternutzen "zerstört" wird.

Dieser Beitrag wurde von Alfonsio bearbeitet: 02. Mai 2019 - 17:10

0

#5 Mitglied ist offline   Carmen 15 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 27. April 19
  • Reputation: 0

geschrieben 04. Mai 2019 - 12:39

Sehr schön, geht. :-)

Nun ist der Versuch es in ein professionelles Programm umzuschreiben. Ich denke dabei an Delphi, welches mit Pascal arbeitet oder das kostenfreie fast identische Lazarus.
Gigts dafür Compiler oder "importiert" man die CMD-Sprache?
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0