Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch-Datei mit den letzten 7 Tagen und von erhalten von schon vorhandenen Daten

Frage Entwicklung Batch & Shell

Mitglied: Nuker5

Nuker5 (Level 1) - Jetzt verbinden

21.02.2006, aktualisiert 22.02.2006, 11068 Aufrufe, 5 Kommentare

Hallo, ich habe eine Frage zu einem Szenario das bei uns genutzt wird. Es werden Daten von einem Programm an ein anderes als Textdatei weitergegeben.
Um sicher zu sein, dass dabei alles richtig lief möchte ich die Textdatei gern archvieren, die vom 2. Programm gelöscht wird, wenn es alles importiert hat.
Die Batchdatei sollte folgendes leisten können:
1. Die Datei die entsteht wird in erstes in das Verzeichnis kopiert, wo das Kassensystem diese abholen soll, dabei muss es überprüfen, ob dort schon eine solche existiert und wenn ja dann anhängen
2. Dann muss es alle Sicherungen der letzten sieben Tage überprüfen und die die größer als 7 Tage sind löschen und die aktuelle als Sicherung erstellen.

Ich habe schon eine Beispieldatei im Internet gefunden, die Ähnliches macht und angepasst:
@echo off
if exist c:\zweites\import.imp TYPE ausgabe.imp >> c:\zweites\import.imp
if not exist c:\vectron\vcom.imp copy vcom.imp c:\vectron
copy ausgabe.imp 0.sik
set /a MaxFiles=7
set /a counter=0
for /f %%i in ('dir /A-d /b /o:- D *.sik') do call :loop %%i
goto end
:loop
set /a counter+=1
if %counter% GTR %MaxFiles% goto end
copy /y %%i %counter%.SIK
goto loop
:end

Probleme sind dabei, dass hier anscheinend nur Generationen gespeichert zu werden und das Datum scheint nicht berücksichtigt zu werden (also an einem Tag also auch mehrere Dateien vorkommen können). Weiterhin scheint die :End-Marke nicht so richtig zu funktionieren, denn er geht irgendwie nicht aus der Schleife raus, wenn das Kriterium erfüllt ist.

Ich hoffe ich habe nichts übersehen und wäre sehr dankbar für Hilfe, da meine DOS-Kenntnisse einige Zeit zurückliegen.

Vielen Dank

Nuker5
Mitglied: Midivirus
21.02.2006 um 15:48 Uhr
Sorry,

aber soweit meine Kenntnisse reichen, sind Batches nur hilfsmittel, die nur einfache Parameter lesen können.
Das Datum etc. kannst du mit einer höhren Sprache (Java, VB, ...) auslesen und auswerten lassen!

Weiß ja nicht, wie deine Programmierkenntnisse sind, aber sowas kann man ganz einfach in JAVA lösen!!!


Grüße
Midivirus
Bitte warten ..
Mitglied: Nuker5
21.02.2006 um 16:22 Uhr
Mit der Batch-Datei kann man das Datum auslesen und es funktioniert auch.
@echo off
::Format JJMMTT
dir *.SIK > file.dat
for /F "tokens=1,2,3 delims=. " %%i in ('findstr SIK file.dat') do call :SUB1 %%i %%j %%k
goto ENDE
:SUB1
set TEMPVAR=%3
set TEMPVAR=%TEMPVAR:~2,2%
set TEMPVAR=%TEMPVAR%%2%1
echo %TEMPVAR%
:ENDE
pause




Tjaaa, aber wie in das große ganze integrieren?

Grüße

Nuker5
Bitte warten ..
Mitglied: Nuker5
21.02.2006 um 16:22 Uhr
Mit der Batch-Datei kann man das Datum auslesen und es funktioniert auch.
@echo off
::Format JJMMTT
dir *.SIK > file.dat
for /F "tokens=1,2,3 delims=. " %%i in ('findstr SIK file.dat') do call :SUB1 %%i %%j %%k
goto ENDE
:SUB1
set TEMPVAR=%3
set TEMPVAR=%TEMPVAR:~2,2%
set TEMPVAR=%TEMPVAR%%2%1
echo %TEMPVAR%
:ENDE
pause




Tjaaa, aber wie in das große ganze integrieren?

Grüße

Nuker5
Bitte warten ..
Mitglied: Biber
21.02.2006 um 19:10 Uhr
Moin nuker5,

Varianten zu Deiner Anforderung hatte wir hier schon ein paarmal "Dateien nach gewissem Alter löschen" oder "Alle Dateien älter als x Tage löschen". Suche mal im Bereich "Batch & Shell" bitte. Da waren einige Strategien relativ ausführlich hergeleitet.

Wie mein vorredner schon richtig schrieb - Rechnen mit Datumswerten gibt es nicht (schlechte Nachricht), aber..
- mit einem JScript- oder VBScript-Schnipsel, der meinetwegen auch vom Batch erzeugt und aufgerufen wird, ginge es.
- und es gibt ein paar mitgelieferte Utilities, die mit dem "Dateialter in Tagen" rechnen können.
Schau Dir dazu mal den XCopy-Befehl oder auch den lustigen ForFiles-Befehl an.
Abhängig von deren Möglichkeiten würde aber unter Umständen ein ganz anderer Batchablauf entstehen.
-und dritte Ausweichmöglichkeit... Du kannst natürlich auch im Batch den relativ simplen Algorithmus für "Berechne aus Datum x das Datum x-7 Tage nachbilden.
So etwas hat Kollege maneich gerade vor ein paar Tagen hier im Forum gemacht bei einer Frage "Datum vom Vortag im Batch berechnen" oder so ähnlich.

Ich würde die Strategie davon abhängig machen, wie robust und kompatibel der Batch sein soll. Und wenn der auf verschiedenen Windows-Rechnern mit verschiedenen Win-Versionen und unterschiedlichen Benutzern gestartet werden wird, dann würde ich empfehlen auf eine eigene Berechnung des "heute-vor-einer-Woche" zu verzichten und die Features von XCopy zu nutzen.

Gruß Biber
Bitte warten ..
Mitglied: Nuker5
22.02.2006 um 14:38 Uhr
Danke Biber,

ich versuch mich mal an die XCOPY-Variante oder die Berechnen von Tag x-7

Viele Grüße

Nuker5
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...