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

Verzeichnis auf neue Dateien prüfen und den Namen dieser in eine Text-Datei schreiben

Frage Entwicklung Batch & Shell

Mitglied: mike9677

mike9677 (Level 1) - Jetzt verbinden

14.11.2012 um 19:22 Uhr, 3167 Aufrufe, 19 Kommentare

Hallo zusammen,

ich suche eine Möglichkeit ein Verzeichnis in relativ kurzen Abständen auf neue Dateien zu untersuchen und wenn welche gefunden wurden, den Namen dieser Dateien in eine Text-Datei zu schreiben.

Bsp.; Im Ordner Bilder liegen unzählige Dateien mit unterschiedlichen Formten. Jetzt kommt die Datei bild0815.jpg hinzu.
Diese soll nun in eine Text Datei geschrieben werden, die ich dann weiter verarbeiten möchte.

Ich habe schon Versuche unternommen, dass ich den Inhalt des Ordners Bilder in eine Text Datei schreiben ließ, dann eine weitere Datei in der Ordner Bilder kopiert habe und wieder den Inhalt in eine Text. Danach habe ich den Inhalt der beiden Text Dateien vergleichen lassen. Hat aber alles nicht zu 100 % funktioniert.

Evtl. hat jemand eine Möglichkeit für mich.

Grüß

Michael

Mitglied: bastla
14.11.2012 um 21:39 Uhr
Hallo mike9677 und willkommen im Forum!

Um zu überprüfen, welche neuen Zeilen in der Datei "Liste2.txt" gegenüber der Datei "Liste1.txt" enthalten sind, könntest Du folgenden CMD-Befehl versuchen:
findstr /vg:Liste1.txt Liste2.txt
Eine Möglichkeit für die dauernde Überwachung eines Ordners findest Du im Thread Automatische PDF-Erstellung und Mail-Versand aus einem Verzeichnis beschrieben.

Es wäre übrigens sinnvoll, etwas näher auf die Rahmenbedingungen (wieviele Dateien im Ordner, in welchem Zeitabstand soll geprüft werden, ...) einzugehen.

Grüße
bastla
Bitte warten ..
Mitglied: mike9677
15.11.2012 um 08:05 Uhr
Hallo und Danke für die Antwort.

Mit dem beschriebenen CMD Befehl habe ich es bereits versucht.
Manchmal funktioniert es, manchmal nicht. Oder muss ich, wenn ich es als Batch-File ausführe, noch etwas ergänzen ?

Der Link zur automatischen PDF-Erstellung und das Skript, welches sich dort befindet, verstehe ich leider nicht ganz.
OK, ich sehe, wo ich den Pfad anpassen muss, um den zu überwachenden Ordner einzugeben.
Aber erstellt das Skript dann auch eine Text-Datei mit dem Namen der neu im Ordner entdeckten Datei und wo findet sich dann diese Text-Datei ?

zu den Rahmenbedingungen: Es befinden sich mehrere Tausend Dateien in dem zu überwachenden Ordner und es wird in unegelmäßigen Abständen immer etwas hinzugefügt. Die Prüfung sollte evtl. jede Stunde erfolgen.

Besten Dank
Bitte warten ..
Mitglied: mike9677
15.11.2012 um 08:40 Uhr
Hallo
ich habe es jetzt gerade mit dem o.g. CMD Befehl noch mal versucht.
2 Text-Dateien erstellt, die eine mit 1,2,3 die andere mit 1,2,3,4.
Ergebnis des CMD Befehls war 4. gut

Jetzt habe ich noch mal 2 Text-Dateien erstellt, die eine mit dem Wort Hallo, die andere mit den Worten Hallo, Erde.
Ergebnis des CMD-Befehls war eine lehre Datei.
Bitte warten ..
Mitglied: pieh-ejdsch
15.11.2012, aktualisiert um 15:00 Uhr
moin mike,

xcopy liest auch eine Exlude Liste aus das sähe in etwa so aus:
01.
:@echo off 
02.
setlocal 
03.
set "Quelle=D:\Bilder\*.jpg" 
04.
 
05.
for /f "delims=" %%i in ("%Quelle%") do pushD "%%~dpi" 
06.
if not exist exclude.txt 3>exclude.txt ping localhost -n 2 >nul  
07.
xcopy /Lic "%Quelle%" Irgendetwas /Exclude:exclude.txt |find ":" >Neu.txt 
08.
type Neu.txt >>Exclude.txt 
09.
popd
Oder es könnte eine Zeile in der Aufgabenplanung Stündlich so lauten:
C:\Windows\System32\cmd.exe /c " pushD "D:\Bilder" & xcopy /Lic "D:\Bilder\*.jpg" "WasNirgendsIst" /Exclude:Exclude.txt |find ":" >"Neu.txt" &type "Neu.txt">>"Exclude.txt" &popD"
Gruß Phil
Bitte warten ..
Mitglied: mike9677
15.11.2012 um 13:17 Uhr
Hallo und Danke für die Hilfe,

wenn ich aber den zuerst genannten Code verwende, die Quelle anpasse und das ganze als Batch laufen lasse, sehe ich zwar kurz ein DOS Fenster, aber das war es dann.
Muss ich noch was anderes anpassen ?

und die Aufgabenplanung: was passiert durch diese Eintragungen ?
Wird hier eine .txt erzeugt und wo ?

Sorry für die vielen Fragen, aber ich bin hierin nicht so bewandert, sonst würde ich mich ja auch nicht an dieses Forum wenden.

Gruß
mike
Bitte warten ..
Mitglied: pieh-ejdsch
15.11.2012, aktualisiert um 15:14 Uhr
Die zweite Forschleife habe ich inklusive der fehlenden Klammer-zu entfernt.
Die Exclude.txt lies sich mit Pfad in Anführungszeichen nicht dem xcopy zum Auslesen übergeben, daher wird in das Verzeichnis der Exclude.TXT gesprungen (pushD).
In diesem Verzeichnis befindet sich dann auch die Neu.txt.

Für die Zeile der Aufgabenplanung muss vor der ersten Ausführung die Exclude.TXT per Hand erstellt werden damit der xcopy Befehl fehlerfrei funktioniert, ansonsten wird zur ersten Ausführung nur eine Leere Exclude.txt erstellt.

Gruß
Bitte warten ..
Mitglied: andimue
15.11.2012 um 15:14 Uhr
Zitat von mike9677:
ich habe es jetzt gerade mit dem o.g. CMD Befehl noch mal versucht.
2 Text-Dateien erstellt, die eine mit 1,2,3 die andere mit 1,2,3,4.
Ergebnis des CMD Befehls war 4. gut

Jetzt habe ich noch mal 2 Text-Dateien erstellt, die eine mit dem Wort Hallo, die andere mit den Worten Hallo, Erde.
Ergebnis des CMD-Befehls war eine lehre Datei.

Wenn es bei dir mit "Hallo" und "Hallo, Erde" (ich hoffe, in 2 Zeilen, oder?) nicht geht muss da wohl was schiefgelaufen sein. Das muss funktionieren.

Gruß
Andi
Bitte warten ..
Mitglied: mike9677
15.11.2012 um 15:38 Uhr
Hallo pieh-ejdsch,

das funktioniert jetzt tadellos.

Es gibt in dem Ordner Bilder noch jede Menge Unterordner. Wenn ich da was reinkopiere, gibt er mir das nicht aus.
Und könnte man die Ablage der Exclude.txt sowie Neu.txt auf c:/ueberwachung umbiegen ??

Vielen Dank
mike
Bitte warten ..
Mitglied: pieh-ejdsch
15.11.2012, aktualisiert um 15:56 Uhr
an den Xcopy muss ein /s für Subdirectories angefügt werden.

Im Batch muss Zeile 05 angepasst werden/etwa so lauten (die For kommt dann weg)
pushD C:\ueberwachung
für die Aufgabenplanung Entsprechend: ... Pushd c:\ueberwachung & xcopy /Lics ... anpassen.

Gruß Phil
Bitte warten ..
Mitglied: mike9677
15.11.2012, aktualisiert um 16:11 Uhr
Meinst du so:

:@echo off
setlocal
set "Quelle=D:\JD\*.jpg"

for /f "delims=" %%i in ("%Quelle%") do pushD "%%~dpi"
if not exist exclude.txt 3>exclude.txt ping localhost -n 2 >nul
xcopy /s /Lic "%Quelle%" Irgendetwas /Exclude:exclude.txt |find ":" >Neu.txt
type Neu.txt >>Exclude.txt
popd

OK... habs hinbekommen.
Gibt es jetzt noch eine Möglichkeit, keine Pfadangabe in der Neu.txt zu bekommen ??
Also einfach den Namen der Datei ?

mike
Bitte warten ..
Mitglied: pieh-ejdsch
15.11.2012, aktualisiert um 17:53 Uhr
ohne Pfadangabe muss dann wieder eine Forschleife Drumherumgebastelt werden, womit wir wieder fast beim Anfang wären.

01.
@echo off 
02.
setlocal 
03.
set "Quelle=D:\Bilder\*.jpg" 
04.
 
05.
pushD "D:\Bilder\" 
06.
if not exist exclude.txt 3>exclude.txt ping localhost -n 2 >nul  
07.
 
08.
09.
 for /f "delims=" %%i in ('xcopy /Lic "%Quelle%" Irgendetwas /Exclude:exclude.txt ^|find ":" ') do ( 
10.
  >&3 echo %%~nxi 
11.
  >&4 echo %%~nxi 
12.
)) 3>Neu.txt 4>>Exclude.txt 
13.
 
14.
popd

Gruß Phil
Bitte warten ..
Mitglied: mike9677
15.11.2012, aktualisiert um 21:28 Uhr
Hi, ICH WERD' VERRÜCKT !!!!

Wenn du mir jetzt noch verrätst, wie ich einen weitern Ordner als Quelle hinzufügen kann (besonders wenn der Ordner "Bilder 02" heißt, mit einem Leerzeichen), bzw eine Erweiterung der Dateiendung (.jpg .raw .tiff) einbauen kann ??

Besten Dank an dich, pieh-ejdsch !!!!
Bitte warten ..
Mitglied: pieh-ejdsch
16.11.2012 um 09:49 Uhr
moin mike,

Dafür werden die Verzeichnisse mit Wildcard per call als Parameter in eine Subroutine übergeben.
Bei Sonderzeichen )(,;&^LEERZEICHEN im Pfad werden Anführungszeichen drumherum gesetzt:
01.
:@echo off 
02.
 
03.
pushD "D:\Dort wo exclude.txt ist\" 
04.
if not exist exclude.txt 3>exclude.txt ping localhost -n 2 >nul  
05.
 
06.
 rem LogDatei fuehren 
07.
3>>"%~n0-LOG.txt" >&3 echo %date% %time% ---- Start ---- 
08.
 
09.
 rem Die Pfade der Subroutine als Parameter Übergeben 
10.
2>>"%~n0-LOG.txt" 3>Neu.txt 4>>Exclude.txt call :SUB D:\Bilder\*.jpg D:\Bilder\*.tif D:\Bilder\*.bmp "D:\Bilder 02\*.jpg" 
11.
 
12.
 rem LogDatei fuehren 
13.
<Neu.txt 3>>"%~n0-LOG.txt" (for /f %%i in ('find /c /v "" ') do >&3 echo %%i Datei^(en^) hinzugekommen)   
14.
3>>"%~n0-LOG.txt" >&3 echo %date% %time% ------------------- Ende ------------------ 
15.
 
16.
popd 
17.
exit /b  
18.
 
19.
:SUB 
20.
set "N=" 
21.
<nul >&2 set /p ="%~1	" 
22.
23.
 for /f "delims=" %%i in ('xcopy /Lics %1 Irgendetwas /Exclude:exclude.txt ^|find ":" ') do ( 
24.
  >&3 echo %%~nxi 
25.
  >&4 echo %%~nxi 
26.
  set /a n+=1 
27.
)) 
28.
>&2 (if defined N (echo %N% Dateie^(en^)) else echo() 
29.
if "%~2" neq "" shift &goto :sub
Gruß Phil
Bitte warten ..
Mitglied: mike9677
16.11.2012 um 11:17 Uhr
Cool, besten Dank !!

Wenn ich jetzt nach Ausführung der Anwendung mit einer Zeitverzögerung von 2 Min. eine weitere .bat starten möchte, gäbe es dafür auch noch eine Möglichkeit ?

Überglückliche Grüß
mike
Bitte warten ..
Mitglied: pieh-ejdsch
16.11.2012 um 11:39 Uhr
da gibt es mehrere möglichkeiten je nach OS bzw. cmd Equipment
timeout /? 
ping /? 
waitfor /? 
sleep /?
01.
 rem zB. vor der exit Zeile 17 
02.
timeout /t 120 /nobreak  
03.
D:\scripte\anderebatch.cmd
Gruß Phil
Bitte warten ..
Mitglied: mike9677
16.11.2012, aktualisiert um 13:26 Uhr
Hi,

wenn ich es so mache (timeout und waitfor funktionieren nicht, erhalte ich in der Neu.TXT den Eintrag : FINDSTR: Suchzeichenfolge zu lang.
Aber die Unterschiede.bat wird ausgeführt, wenn auch wohl die Zahl (Zeit bis zur Ausführung) keine Auswirkung hat.

01.
 :@echo off 
02.
 
03.
pushD "D:\" 
04.
if not exist exclude.txt 3>exclude.txt ping localhost -n 2 >nul  
05.
 
06.
 rem LogDatei fuehren 
07.
3>>"%~n0-LOG.txt" >&3 echo %date% %time% ---- Start ---- 
08.
 
09.
 rem Die Pfade der Subroutine als Parameter Übergeben 
10.
2>>"%~n0-LOG.txt" 3>Neu.txt 4>>Exclude.txt call :SUB D:\JD\*.jpg "D:\JD 02\*.bmp"  
11.
 
12.
 rem LogDatei fuehren 
13.
<Neu.txt 3>>"%~n0-LOG.txt" (for /f %%i in ('find /c /v "" ') do >&3 echo %%i Datei^(en^) hinzugekommen)   
14.
3>>"%~n0-LOG.txt" >&3 echo %date% %time% ------------------- Ende ------------------ 
15.
 
16.
 rem zB. vor der exit Zeile 17  
17.
 
18.
ping /t 1200 /nobreak   
19.
D:\unterschiede.bat 
20.
 
21.
popd 
22.
exit /b  
23.
 
24.
:SUB 
25.
set "N=" 
26.
<nul >&2 set /p ="%~1	" 
27.
28.
 for /f "delims=" %%i in ('xcopy /Lics %1 Irgendetwas /Exclude:exclude.txt ^|find ":" ') do ( 
29.
  >&3 echo %%~nxi 
30.
  >&4 echo %%~nxi 
31.
  set /a n+=1 
32.
)) 
33.
>&2 (if defined N (echo %N% Dateie^(en^)) else echo() 
34.
if "%~2" neq "" shift &goto :sub 
35.
 
36.
 
Bitte warten ..
Mitglied: pieh-ejdsch
16.11.2012, aktualisiert um 18:12 Uhr
Hast Du denn einmal ping /? in die CMD-Line eingegeben?
Der Befehl, um ca. 2 min per ping zu warten, lautet:
ping localhost -n 120 >nul
Die Wartezeit und der Batchaufruf sollten aber erst nach popD sowie vor (dem nur vorsorglichen) exit /b erfolgen.
Ist dann etwas sauberer Programmiert.

... erhalte ich in der Neu.TXT den Eintrag : FINDSTR: Suchzeichenfolge zu lang.
Aber nicht von diesem Batch, da hier kein Findstr verwendet wird - höchstens Find.
Eventuell schreibt unterschiede.bat in die neu.txt.

PS. den Doppelpunkt vor echo off kannst Du entfernen, wenn alles sauber durchläuft. Steht ja nur zum testen/Bugtracking auf der CMD-line Da.

Gruß Phil
Bitte warten ..
Mitglied: SilentTom
26.11.2012 um 00:32 Uhr
Genau dafür gibt es ein kleines praktisches Programm namens MD5 FILE HASHER von Digital-Tronic.

Mit dem Programm können vollautomatische Dateiüberprüfungen erstellt werden, um in zeitgesteuerten Abständen beliebige Dateien, Dateitypen und ganze Ordner zu überwachen. Dabei stehen umfangreiche Filterfunktionen und Ausnahmeregeln zur Verfügung, um beispielsweise alle JPG, BMP usw. Dateien eines bestimmten Verzeichnises zu überwachen. Geänderte, gelöschte und neu erstelle Dateien werden auf Wunsch als PopUp-Meldung mitgeteilt und können zusätzlich als TXT-Datei abgespeichert werden. Die Erkennung von Dateiänderungen wird mit Hilfe von MD5 Prüfsummen festgestellt. Es wird also von jeder existierenden Datei eine Art Fingerabdruck erstellt, der bei späteren Untersuchungen verglichen wird. Stimmt dieser nicht überein, so wurde die Datei geändert. Neue Dateien werden ebso aufgelistet.

Das Programm gibts auf digital-tronic.de und ist in Deutsch und Englisch verfügbar. Auf YouTube sind auch Videos bzw. Tutorials online.
Bitte warten ..
Mitglied: mike9677
26.11.2012 um 08:08 Uhr
Schön, das Programm werde ich mir mal bei Gelegenheit noch ansehen.

Bin aber für den Moment mit der bisherigen Lösung voll und ganz zufrieden, da ich alles (Prüfung auf neue Inhalte, erstellen einer .txt und versenden der .txt per email) in einer BATCH am Laufen habe.

Hier sei nochmal gesagt: vielen vielen Dank an phil !!!

Gruß
mike
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Batch & Shell
gelöst 2 große TXT Dateien vergleichen und Unterschiede in andere Datei schreiben (6)

Frage von sid.pdm zum Thema Batch & Shell ...

Batch & Shell
Mehrere.csv Dateien zusammenfügen zu einer Datei mit bat (4)

Frage von Piotrney zum Thema Batch & Shell ...

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

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...