Top-Themen

Aktuelle Themen (A bis Z)

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

Einzelne Dateien auf Veränderung überwachen

(Level 1)

23.01.2007, aktualisiert 24.01.2007, 10071 Aufrufe, 9 Kommentare

Normalerweise gibt es ja dafür genug Programme. Leider ist mein Rechner so gesichert, dass nichts installiert werden kann.

Also, ich arbeite in einem Netzwerk. Ich teile mir mehrere Exceltabellen mit mehreren Kollegen. Sobald der Mitarbeiter Daten in die Exceltabelle eingestellt hat, muss ich diese weiter verarbeiten. Ich möchte aber nicht andauernd nachschauen müssen, ob eine Veränderung z.B. das aktualisierungs Datum der Datei stattgefunden hat.

Falls Möglich, sollte eine Batch Datei alle paar Minuten prüfen, ob die Exceldatei geändert wurde und dann ein beliebigen Befehl ausführen.

Ich habe es mit meinen bescheidenen Kenntnissen zwar mit folgender Batch geschafft.
Mir gefällt aber daran nicht, dass jedesmal auf das Laufwerk zugegriffen wird.
Kann die Prüfung auch im Speicher (ohne File und ohne Laufwerk) stattfinden?

Für eine Änderung der Batch oder für eine neue Batch wäre ich dankbar.
Vielleicht gibt es aber auch schon eine fertige Batch?
Eine der zu prüfenden Dateien heißt entsörung.xls
System ist Win 2000


x:
cd X:\data

:beginn
dir X:\data\ent*.xls /tw/a > dergebnis.txt

copy findergebnis.txt findergebnis1.txt
findstr "entsörung.xls" dergebnis.txt >findergebnis.txt

echo N|comp findergebnis.txt findergebnis1.txt
IF ERRORLEVEL 1 ECHO Datei ist die alte
pause
IF NOT ERRORLEVEL 1 GOTO beginn
else start cmd.exe
Mitglied: bastla
23.01.2007 um 20:53 Uhr
Hallo Poke256 und willkommen im Forum!

Batch habe ich nicht anzubieten, aber vielleicht kannst Du ja folgende VBScript-Lösung verwenden:
01.
'CheckUpdated.vbs 
02.
'Defaultwerte: 
03.
sFile = "X:\Data\entsörung.xls" 
04.
lInterv = 30000 '30 s 
05.
 
06.
If WScript.Arguments.Count > 0 Then sFile = WScript.Arguments(0) 
07.
If WScript.Arguments.Count > 1 Then lInterv = WScript.Arguments(1) 
08.
MsgBox "Überwachung von " & sFile & vbCrLF & "gestartet, Intervall: " & lInterv / 1000 & " Sekunden" 
09.
Set fso = CreateObject("Scripting.FileSystemObject") 
10.
bRun = True 
11.
sTimeStamp = fso.GetFile(sFile).DateLastModified 
12.
Do While bRun 
13.
	Do While fso.GetFile(sFile).DateLastModified = sTimeStamp 
14.
		WScript.Sleep lInterv 
15.
	Loop 
16.
	sTimeStamp = fso.GetFile(sFile).DateLastModified 
17.
	iRet = MsgBox("Datei " & sFile & " wurde geändert." , 65, sTimeStamp) 
18.
	If iRet = vbCancel Then bRun = False 
19.
Loop 
20.
Msgbox "Überwachung von " & sFile & " beendet."
Gebrauchsanweisung:
Passe die Defaultwerte für zu überwachende Datei und Intervall (in ms) an und speichere das Script zB in "D:\Scripts\CheckUpdated.vbs".

Wenn Du das Script durch Doppelklick auf die Datei "CheckUpdated.vbs" startest, werden die eingetragenen Werte verwendet.

Alternativ dazu (etwa um parallel eine zweite Datei zu überwachen) kannst Du am CMD-Prompt eingeben:
01.
D:\Scripts\CheckUpdated.vbs "X:\Data\versörung.xls" 120000
In diesem Beispiel würde die Datei "X:\Data\versörung.xls" nur alle 2 Minuten (120 s) überprüft.

Eine weitere Startmöglichkeit wäre eine Verknüpfung, wobei die dargestellte Zeile als Ziel einzutragen wäre.

Wenn die Datei neu gespeichert wurde, erfährst Du dies (spätestens nach Ablauf des Intervalls von zB 2 Min) durch eine MessageBox (mit Hinweis auf den Dateinamen und das Speicherdatum samt -zeit). In dieser MessageBox hast Du jetzt die Möglichkeit, die Überwachung weiter durchführen zu lassen ("OK"), oder Du wählst "Abbrechen".

Zum Beenden der Überwachung ohne die angesprochene MessageBox musst Du den "wscript.exe"-Prozess beenden (Register "Prozesse" im Task-Manager - Aufruf über Str-Alt-Entf).

HTH
bastla
Bitte warten ..
Mitglied: Biber
23.01.2007 um 23:24 Uhr
Moin Poke256,

auch von mir ein Willkommen.

Ich war schon im Vorfeld ganz gespannt auf bastla's Lösung und wollte als ersten Satz schreiben:
"Eigentlich ist das nicht sinnvoll im Batch zu lösen, ich würde das mit VBS abfackeln und auf bastla warten."

Aber what shalls, zufällig habe ich ja gerade eine ähnliche Anforderung und ebenso zufällig auch meinen sportlichen Ehrgeiz...


Mein Szenario und meine Vorüberlegungen für eine Batch-Strategie:

Ich habe auf einem Serverlaufwerk Dokumentationen, die ich zusammen (aber räumlich getrennt) mit einem Kollegen bearbeite.
Diese Dateien werden sporadisch/unregelmäßig gepflegt, aber wenn es eine Änderung gibt, schaue ich es mir asap an.

Diese Dateien bei mir sind keine ".xls"-Dateien, sondern haben eine andere Extension.
Da ich den Batch variabel halten will, definiere ich (uns) eine %ext%-Variable.
Entsprechend auch eine für das Server-Share-Laufwerk (%share%).
Den aktuellsten Stand der Dateien speichere ich lokal (als gefilterten DIR-Output) in einem Pfad %compdir%.
Ähnlich wie Du, Poke256, nit Deiner Ergebnis.txt. Bei mir heißt die lastRead.txt.

Unterschied: ich starte meinen Schnipsel, nennen wir ihn CheckXLS.bat, dadurch, dass ich ihn ins Autostart-Verzeichnis lege.
Dann wird er morgens, wenn ich mich anmelde, gestartet. As is. Ohne Parameter.
Er tut, was ein Batch tun muss, und legt sich selbst bei dieser Gelegenheit nochmal für den Rest des Tages als AT-Job an.
Zu jeder folgenden (und der aktuellen) Stunde+30 Minuten.
Also, wenn ich mich morgens um 7:15 anmelde, lege ich mit dieser Zeile
01.
if [%1]==[] for /f "delims=:" %%i in ("%time%") do @for /L %%x in (%%i,1,23) do echo At %%x:30 /interactive "%~dspnx0 Noinit"
gleich für 7:30, 8:30, 9:30.....23:30 ein paar Jobs an, die diesen Batch dann aufrufen.
Falls Du nicht bis 23:30 unterwegs bist, solltest Du das "in (%%i,1,23)" ändern in "in (%%i,1,17)" oder so.

Und wenn der Batch eine Meldung abgefeuert hat, dann wird der aktuelle Stand auf dem %share%-Verzeichnis wieder als neue Grundlage genommen.
Sprich: in die Datei %compDir%\lastRead.txt geschrieben.
01.
::--------------snipp CheckXLS.bat--------Biber 2007 
02.
@echo off & setlocal 
03.
REM ==========Beginn von: Hier anpassen 
04.
<b>Set "ext=xls" & Set compdir=d:\temp\comp 
05.
Set "shared=\\xxServer00119\whatever\ABCD_Systeme\9 Teilprojekte\9.2 XX-Warehouse\ZZ-Integration\DB-Modell"</b> 
06.
REM ========== Ende von Hier anpassen 
07.
if not exist %compdir% md %compdir% 
08.
if not exist %compdir%\lastread.txt dir "%shared%\*.%ext%"|find /i ".%ext%">%compdir%\lastread.txt 
09.
for /f "tokens=1-3*" %%a in (%compdir%\lastread.txt) do @( 
10.
     if exist "%shared%\%%~nxd" @for %%i in ("%shared%\%%~nxd") do @( 
11.
          if "%%a %%b" NEQ "%%~ti" ( 
12.
               echo [%%d]-Datum ist anders.. [%%a %%b] ungleich [%%~ti] 
13.
               pause 
14.
               set MsgSent=jepp 
15.
 ))) 
16.
REM Achtung: beim Aufruf OHNE Parameter geht der Batch in die folgende Zeile!!!!  
17.
if [%1]==[] for /f "delims=:" %%i in ("%time%") do @for /L %%x in (%%i,1,23) do <b>ECHO</b> At %%x:30 /interactive "%~dspnx0 Noinit" 
18.
REM----------------- in der Zeile über dieser das <b>ECHO</b> entfernen zum AT-Jobs-Anlegen. 
19.
if not defined MsgSent goto :eof 
20.
 
21.
dir "%shared%\*.%ext%"|find /i ".%ext%">%compdir%\lastread.txt
[Flüchtig getestete Skizze]

Kernstück ist eigentlich die FOR-Anweisung, die den Vergleich macht.
Und zwar bei mir über alle Dateien in diesem %share%-Verzeichnis, nicht nur über eine.
Ist ja der gleiche Aufwand.
Alles andere ist nur Beiwerk.

Falls es KEIN AT-Job werden muss, sondern der Batch aus einem geöffneten CMD-Fenster gestartet wird:
Ersetze :
echo [%%d]-Datum ist anders.. [%%a %%b] ungleich [%%~ti]
-durch-
MSG %username% [%%d]-Datum ist anders.. [%%a %%b] ungleich [%%~ti]
- und streiche das "pause".

Und nochmal für Schnell-Leser und Copy&Paster:
So, wie der Schnipsel designed ist, legt er beim Aufgerufenwerden ohne Parameter ganz viele "Geplante Tasks" für den Rest des Tages an.

Also bitte beim Testen vom CMD-Prompt lieber x-beliebigen Parameter (z.b. "öalklklklklklkgüj") mitgeben.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
23.01.2007 um 23:53 Uhr
@Biber

Hattest Du überschüssige Vorschusslorbeeren?

An AT-Jobs hatte ich auch gedacht (um den schweren Schönheitsfehler hinsichtlich des Beendens zu vermeiden), aber da ich nicht wusste, wie dringend die Weiterverarbeitung (" ;... alle paar Minuten ...") sein würde, hab ich's vorläufig zurückgestellt (obwohl ja auch eine dreistellige Anzahl eigentlich kein Problem sein dürfte - oder?).

Im übrigen musste ich auch fast das Script im Hintergrund weiterlaufen lassen, damit ich durch die Zwischenspeicherung in einer Variablen dem Wunsch nach weniger Dateizugriffen Rechnung tragen konnte ...
@Poke256

Da Du eine Prüfung "im Speicher" angeregt hast: Habt Ihr eigentlich die Datei beide gleichzeitig geöffnet (arbeitet also mit "freigegebenen Arbeitsmappen"?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
24.01.2007 um 00:24 Uhr
Na ja,

wo wir gerade von "kleinen Schönheitsfehlern" sprechen...

Ein Problem hab ich auch unter den Tisch gekehrt:
Wenn ich selber derjenige bin, der auf dem %Share% aktualisiert (und speichert)...
Dann bekomme ich auch diese Benachrichtigungen.

Würde sicherlich dazu führen, dass ich noch mal einen zweiten Oneliner schreiben muss, der alle AT-Jobs /DELETEd, die als gestartetes Programm diese CheckXls.bat haben.

Zum Thema "im-Speicher" statt mit Zwischendateien:
Das habe ich oben drin. Das ist nichts weiter als die direkte Auswertung des "Dir"-Befehls in einer FOR /F-Anweisung.

Zum Beispiel: Wenn ich die Dateien in zwei verschiedenen Verzeichnissen vergleichen wollte, könnte ich statt:
for /f "tokens=1-3*" %%a in (%compdir%\lastread.txt) do...
ja schreiben...
for /f "tokens=1-3*" %%a in ('dir W:\oAuchImmer\*.xls^|find /i ".xls"') do...

Die Zwischendatei lastread.txt macht ja nur Sinn, wenn und weil ein zeitlicher Prüf-Abstand von mehr als Hundertstel-Sekunden dazwischenliegt. Da halte ich eine stündliche Prüfung für ausreichend.
Wenn es dringlicher ist, dann würde ich ohnehin eine organisatorische Lösung erwägen:
- entweder der MA, der mit seiner Bearbeitung fertig ist, MUSS den nächsten per Mail informieren.
- oder in der Excel-Datei wird "Beim Speichern" automatisch eine Mail losgeschickt.

Gruß
Biber
Bitte warten ..
Mitglied: bastla
24.01.2007 um 00:27 Uhr
@Biber

Zum Thema "im-Speicher"
War ja nur Spass

Grüße
bastla
Bitte warten ..
Mitglied: Biber
24.01.2007 um 00:34 Uhr
War ja nur Spass
...leider eine der wenigen Dinge, die ich nicht per Batch prüfen kann...
Wenn Du da eine VBS-Lösung für mich hättest..?
Bitte warten ..
Mitglied: bastla
24.01.2007 um 00:42 Uhr
Jetzt hast Du mich auf dem falschen Fuß erwischt - mein "SpassFaktorBestimmungsAlgorithmus" ist mir irgendwie beim Portieren von Sinclair-Basic über PowerBasic nach VBS abhanden gekommen *schäm* - jetzt schätz' ich einfach ... (obwohl - Spass habe ich eigentlich eh immer schon sehr geschätzt ... )

Grüße
bastla
Bitte warten ..
Mitglied: bastla
24.01.2007 um 08:48 Uhr
Hallo Poke256!

Kann an diesen Code auch in ein Access VBA einfügen?
Grundsätzlich ja, aber nicht ohne Anpassungen im Detail - oder, anders formuliert, die Lösung lässt sich auch aus Office (VBA) heraus realisieren. Wenn Du allerdings VB-Script verwenden darfst, würde ich (trotz der etwas unorthodoxen Art der Beendigung per Task-Manager) bei dieser Variante bleiben.

Grüße
bastla
Bitte warten ..
Mitglied: SilentTom
18.07.2012 um 16:32 Uhr
Am Besten via Hashwert prüfen. Google mal nach "md5 file hasher". Das ist genau das was du suchst! Mit dem Programm kannst du alle XLS Dateien, egal ob neu erstellt, gelöscht oder geändert überwachen. Man muss halt den md5 file hasher installieren...
Bitte warten ..
Ähnliche Inhalte
Windows Server

GPO: Richtlinien überwachen auf Veränderung

gelöst Frage von atk691Windows Server2 Kommentare

Hallo zusammen, eventuell eine simple Frage, aber ich habe (villeicht gerade deswegen) keine Antwort gefunden. Folgender Fall: heute ist ...

Windows Server

Zugriff auf exe Datei überwachen

gelöst Frage von sardldbWindows Server2 Kommentare

Hallo Zusammen Ich habe lange gegoogelt und mir auch ProcessMonitor heruntergeladen und ausprobiert. Leider komme ich nicht auf mein ...

Batch & Shell

Verzeichniss überwachen Datei kopieren und umbenennen

gelöst Frage von fischle63Batch & Shell6 Kommentare

Hallo, Habe folgendes Problem: In einem Verzeichniss sind Dateien mit dem Suffix ".nd" enthalten. Bsp. "00000010.nd" Ich brauche eine ...

Batch & Shell

Watchdog - Datei auf Änderungen überwachen mit Batch

gelöst Frage von georg2204Batch & Shell2 Kommentare

Hallo, ich habe ein Programm, welches in kurzen Abständen immer wieder über COM1 Daten abfragt und diese speichert / ...

Neue Wissensbeiträge
Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 21 StundenHumor (lol)1 Kommentar

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 23 StundenExchange Server6 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 1 TagErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 2 TagenVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Heiß diskutierte Inhalte
Windows Server
Domäne einsilbig mit nur einem Namen benannt - sowie AD und MX auf einer VM Kardinalsfehler?
Frage von TomTestWindows Server50 Kommentare

Hallo liebe Freunde gepflegter Probleme, seit kurzem soll ich eine Domäne verwalten die zuvor von einem IT-Dienstleister erstellt und ...

DSL, VDSL
Router Neustarts
Frage von XerebusDSL, VDSL16 Kommentare

Hallo an alle, ich hab eine Problem mit dem Neustart von meiner Fritz Box wo ich einfach nicht mehr ...

DNS
Gibt es eine Art DNS Proxy?
Frage von icepietDNS16 Kommentare

Hallo Nerds, Ich würde gerne folgendes machen: ts.domain.de:3389 soll auf 1.2.3.4:3389 auflösen ts2.domain.de:3389 soll auf 1.2.3.4:3390 auflösen Gibt es ...

Windows Server
Windows Server per Web auf Daten zugreifen und verwalten
Frage von matze2090Windows Server16 Kommentare

Hallo, ich würde gerne von außen auf meinem Windows Server zugreifen um auf meine Daten zu verwalten. Meine frage ...